springmvc学习记录----springmvc的文件上传和下载

最近学习使用了springmvc的文件上传和下载,下面将记录一下使用的要点。

  1. 首先将需要的jar包加到项目的web-inf下的lib,其中包括两个jar包:commons-fileupload-1.2.2.jar和commons-io-2.4.jar。
  2. 文件的上传需要在spring的配置文件中(我这里命名为springmvc.xml)配置好相应bean标签,配置如下:
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置文件最大尺寸15MB -->
        <property name="maxUploadSize">
            <value>15683640</value>
        </property>
    </bean>

以上简单配置好之后,接下来就可以进行文件上传了。

一、文件上传

首先,进行文件上传要在页面的提交表单中设置enctype=”multipart/form-data”,即如下:

<form method="post" action="upload.action" enctype="multipart/form-data">

</form>

接着就是响应的controller方法,以下:

@RequestMapping("/upload.action")
public void songUpLoad(Model model, MultipartFile file_path, SongUploadVo songUploadVo) throws Exception {

    if (file_path != null && file_path.getOriginalFilename() != null && file_path.getOriginalFilename().length() > 0) {

        // 获取文件原始名称,用于获取后缀名
        String filename = file_path.getOriginalFilename();

        // 设置存储文件的物理路径,这里我把它放在tomcat的webapps下的ROOT的一个自己创建的MP3文件夹下
        String tomcat_path = System.getProperty("catalina.home");

        String pic_path = tomcat_path + "\\webapps\\ROOT\\mp3\\";

        // 设置文件新名称,随机数字+后缀名
        String newFileName = UUID.randomUUID() + filename.substring(originalFilename.lastIndexOf("."));

        // 创建新文件,路径+文件名称
        File newFile = new File(pic_path + newFileName);

        // 把文件从内存写入磁盘
        file_path.transferTo(newFile);
        }
    }

注意:String tomcat_path = System.getProperty(“catalina.home”);这个是获取自己tomcat的路径,需要在系统变量中配置CATALINA_HOME。
这里写图片描述

二、文件下载
至于文件下载,简单一点。

@RequestMapping("/download.action")
    public ResponseEntity<byte[]> SongDownload(String file_name, String path) throws Exception {
        //1.创建该文件
        File file=new File(path);  
        //2.设置响应格式
        HttpHeaders headers = new HttpHeaders();    
        String fileName=new String(file_name.getBytes("UTF-8"),"iso-8859-1");//转码

        headers.setContentDispositionFormData("attachment", fileName);   

        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);   
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);

    }

这里写图片描述

非常简单就实现了。

最后,多文件的上传还没有用到,找个风和日丽的下午再试试….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值