基于SpringMVC的文件上传下载,mark一下,废话不多说,直接上代码:
一,环境
这里使用的是maven项目结构,上传文件maven相关依赖如下:
<!-- 上传文件依赖 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.2</version>
</dependency>
Spring配置:
<mvc:annotation-driven>
<!-- 下载文件配置 -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
上传文件代码:
@RequestMapping(value = "/uploadFile.do", method = RequestMethod.POST)
public @ResponseBody boolean uploadFile(
@RequestParam(required = false) MultipartFile file){
File f = new File("D://temp//upload//"+file.getOriginalFilename());
if(!f.getParentFile().exists()){
f.getParentFile().mkdirs();
}
file.transferTo(f);
}
上传文件页面
<form action="uploadFile.do" method="post">
<input type="text" size="20" name="fileName" id="fileName" style="border: 1px solid #ccc;width:20%" />
<input type="button" value="浏览" onclick="path.click()" style="border: 1px solid #ccc;width:7%;"/>
<input type="file" id="file" name="file" style="display: none" onchange="fileName.value=this.value"/>
<input type="submit" value="提交">
</form>
下载文件代码:
@RequestMapping(value = "/downloadFile.do", method = RequestMethod.GET)
public ResponseEntity<byte[]> downloadFile(String fileName) {
try {
String fileName = "D://temp//upload//"+fileName;
File file = new File(fileName);
// 设置字节编码
String dfileName = new String(fileName.getBytes("UTF-8"),
"iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", dfileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
页面写个链接接跳转到请求就可以了