转自 : http://blog.youkuaiyun.com/qq_32953079/article/details/52290208
最近博主在做SpringMvc文件上传和下载的功能实现,上网查了很多资料很多都不太符合理想,找啊找,终于找到一个可以用的,然后再此基础上,我加以改进,可以支持多文件上传,而且代码非常精简,大家可以看看.
http://pan.baidu.com/s/1o7Oo4NC
原码下载
首先导入jar包:
在此,为了方便,给大家提供一个下载链接: http://pan.baidu.com/s/1hs6qRsg 需要的朋友自行下载.
然后,在applicatinContext.xml中添加上传和下载的配置文件,如下:
-
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
-
- <property name="maxUploadSize" value="200000"/>
- </bean>
-
-
- <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
-
- <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error</prop>
- </props>
- </property>
- </bean>
好了,最基础的配置就好了,接下来jsp页面:upload.jsp
- <form action="upload.do" method="post" enctype="multipart/form-data">
- 文件1: <input type="file" name="myfiles"/><br/>
- 文件2: <input type="file" name="myfiles"/><br/>
- 文件3: <input type="file" name="myfiles"/><br/>
- <input type="submit" value="上传">
- </form>
Controller中对应的java代码:
- @RequestMapping("/upload.do")
- public String upload(@RequestParam MultipartFile[] myfiles,HttpServletRequest request) throws IOException {
- for(MultipartFile file : myfiles){
-
- if(file.isEmpty()){
- System.out.println("文件未上传!");
- }
- else{
-
- String fileName = file.getOriginalFilename();
-
- String path1 = request.getSession().getServletContext().getRealPath("image")+File.separator;
-
- String path = path1+ new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ fileName;
-
- System.out.println(path);
-
- File localFile = new File(path);
- file.transferTo(localFile);
- }
- }
- return "uploadSuccess";
- }
这样就可以把网页上选择的图片上传上去了.


下载成功了!
文件下载(文件下载我是参照网上一位前辈的,在此注明他的博客网址:http://my.oschina.net/u/1394615/blog/311307):
download.jsp:此处为了测试,我直接把用户名当作参数传过去:
- <a href="download.do?fileName=2016082312271111111.jpg">下载</a>
Controller:
- @RequestMapping("/download")
- public String download(String fileName, HttpServletRequest request,
- HttpServletResponse response) {
- response.setCharacterEncoding("utf-8");
- response.setContentType("multipart/form-data");
- response.setHeader("Content-Disposition", "attachment;fileName="
- + fileName);
- try {
- String path = request.getSession().getServletContext().getRealPath
- ("image")+File.separator;
- InputStream inputStream = new FileInputStream(new File(path
- + fileName));
-
- OutputStream os = response.getOutputStream();
- byte[] b = new byte[2048];
- int length;
- while ((length = inputStream.read(b)) > 0) {
- os.write(b, 0, length);
- }
-
-
- os.close();
-
- inputStream.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
-
- return null;
- }
OK,springmvc的上传下载就完成了!