下面是SpringMVC深入讲解文件的上传下载实现的完整攻略。
上传文件
HTML表单设置
在html表单中设置enctype="multipart/form-data"
即可上传文件。注意要将表单method设置为post。
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit"/>
</form>
SpringMVC配置
在SpringMVC配置文件中添加以下配置:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!--限制单个文件大小10MB-->
<property name="maxUploadSize" value="10485760"/>
<!--限制总上传文件大小20MB-->
<property name="maxUploadSizePerFile" value="20971520"/>
</bean>
CommonsMultipartResolver
类支持文件上传,并且可以限制文件大小。
Controller实现
在Controller中添加以下代码:
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) {
try {
//获取上传文件名
String fileName = file.getOriginalFilename();
//保存文件到本地
File saveFile = new File("C:/uploads/" + fileName);
file.transferTo(saveFile);
} catch (IOException e) {
e.printStackTrace();
}
return "success";
}
下载文件
Controller实现
在Controller中添加以下代码:
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(HttpServletResponse response) {
String filePath = "C:/uploads/test.txt";
File file = new File(filePath);
String fileName = file.getName();
try {
//设置响应头
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO-8859-1"));
//输出文件流
FileInputStream fis = new FileInputStream(filePath);
BufferedInputStream bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
byte[] bytes = new byte[1024];
int len = 0;
while((len = bis.read(bytes)) != -1) {
os.write(bytes, 0, len);
}
os.close();
bis.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
HTML链接
在HTML中添加以下代码:
<a href="/download">Download</a>
当用户点击链接时,文件将自动下载。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC深入讲解文件的上传下载实现 - Python技术站