导读
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);
}