springMVC文件的上传与下载

导读

springMVC对文件的上传和下载都有相应的方法支持,只需要在springmvc.xml中配置一些参数,后台代码很简单。

1.springmvc.xml添加配置

 <!-- 上传文件配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
    <property name="defaultEncoding" value="utf-8" /> 
    <!-- 最大上传大小 -->
    <property name="maxUploadSize" value="100000000" />   
    <!-- 小于maxInMemorySize 字的文件不会生成临时文件 -->
    <property name="maxInMemorySize" value="1024" />   
</bean> 

maxInMemorySize,小于这个值的文件不能上传。

<!-- 文件下载字符编码格式 -->
<bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> 
    <property name="supportedMediaTypes"> 
        <list> 
            <value>text/plain;charset=UTF-8</value> 
        </list> 
    </property> 
</bean>

2.上传代码

首先在jsp的form表单中,必须要有enctype=”multipart/form-data”

<form action="resource/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="upload">
    <input type="submit" value="提交">
</form>

后台接收文件,用@RequestParam(“upload”)绑定参数,MultipartFile类型接收文件

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("upload")MultipartFile file) throws IllegalStateException, IOException {
        //得到文件名
        String rName = file.getOriginalFilename();
        //设置存放路径
        String path = "D:/Work/Pro/bysj/resource/" + rName;
        //然后直接调用MultipartFile的内置函数,上传完成。。
        file.transferTo(new File(path));
}

上传文件就这么一行,不过一般还要保存文件信息到数据库(这个简单,不写了)

3.文件下载

//rname是请求下载的文件名
@RequestMapping("/downFile")
public ResponseEntity<byte[]> download(String rname) throws IOException { 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); 
    headers.setContentDispositionFormData("attachment", rname); 
    //存放文件的路径
    String path = "D:/Work/Pro/bysj/resource/" + rname;
    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(path)), headers, HttpStatus.CREATED); 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值