SpringMVC实现文件上传方法,只是一个简单的demo,后面有jar下载
1.在spring中配置【上传文件的解析器】
<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<propertyname="defaultEncoding"value="utf-8"/>
<propertyname="maxUploadSize"value="10485760"/><!-- 上传文件限制 -->
<propertyname="maxInMemorySize"value="20480"/><!-- 缓存大小 -->
</bean>
2.前台jsp页面
<form id="fm"action="/springMVC/fileUpload/addfile" method="post" enctype="multipart/form-data">
<inputtype="file"name="myfile"value=""> <inputtype="button"id="submit1"value="提交"/>
<inputtype="submit"value="submit">
</form>
3.后台Controller
@RequestMapping("/upload") public String upload1(@RequestParam("myfile") MultipartFile file, HttpServletRequest req) throws Exception { String filename = file.getOriginalFilename();// 获取文件名称,带后缀 System.out.println("进入上传!文件名:" + filename); if (!file.isEmpty()) { try { FileOutputStream out = new FileOutputStream("D:wll/"
- file.getOriginalFilename().substring(0, file.getOriginalFilename().indexOf(".")) + ".hh"); //这是我自己的拼接的新文件名称: 比如:springmvc.hh InputStream in = file.getInputStream(); int b = 0; while ((b = in.read()) != -1) { out.write(b); } out.flush(); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } return "success"; }
上面是单个文件上传 ,如果需要多个文件上传,只需要把前台的name改成一样的,后台的Controller接收的参数改成数组,在遍历数组里把单文件的方法复制过来即可:红色是改动的部分
public String upload(@RequestParam("myfile") MultipartFile[] files, HttpServletRequest req) throws Exception { for (MultipartFile file:files) { String filename = file.getOriginalFilename();// 获取文件名称,带后缀 System.out.println("进入上传!文件名:" + filename); if (!file.isEmpty()) { try { FileOutputStream out = new FileOutputStream("D:wll/"+ file.getOriginalFilename().substring(0, file.getOriginalFilename().indexOf(".")) + ".wll"); InputStream in = file.getInputStream(); int b = 0; while ((b = in.read()) != -1) { out.write(b); } out.flush(); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
return "success"; }
链接是整个springmvc的包,不仅仅有文件上传,可以在Eclipse直接跑起来的