SpringMVC 中的上传下载

/

在使用SpringMVC 做上传时需要做的时在配置文件中配置

  1. <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  2. <property name="defaultEncoding" value="utf-8"/>
  3. </bean>
  • bean 中 name 只能是 multipartResolver,在需要使用处理文件上传的方法添加 MultipartFile 参数
  1. @RequestMapping(value="/user/file/upload")
  2. public String upload(HttpSession session,Model model,MultipartFile file,String dir){
  3. //String root=((User)session.getAttribute("user")).getVhost().getDoc_root()+"/"+ParseTools.paramToString(dir)+"/"+file.getOriginalFilename();
  4. //服务器端文件存放的路径
  5. String root="e:/1.txt";
  6. try {
  7. FileUtils.copyInputStreamToFile(file.getInputStream(), new File(root));
  8. model.addAttribute("msg", "上传完成了");
  9. } catch (IOException e) {
  10. e.printStackTrace();
  11. }
  12. return "user/message";
  13. }

下载: 与普通Servlet 下载类似

  1. @RequestMapping(value="/user/file/down")
  2. public ModelAndView down(HttpSession session,HttpServletRequest request,HttpServletResponse response,String f){
  3. String root=((User)session.getAttribute("user")).getVhost().getDoc_root()+"/"+f;
  4. BufferedInputStream bis =null;
  5. BufferedOutputStream bos=null;
  6. try {
  7. response.setHeader("Content-type", "application/octet-stream;");
  8. response.setHeader("Content-Disposition", "attachment;filename="+new String(f.substring(f.lastIndexOf("/")+1).getBytes("utf-8"), "ISO8859-1"));
  9. bis = new BufferedInputStream(new FileInputStream(root));
  10. bos = new BufferedOutputStream(response.getOutputStream());
  11. byte[] buff = new byte[2048];
  12. while(bis.read(buff)!=-1){
  13. bos.write(buff);
  14. buff=new byte[2048];
  15. }
  16. }
  17. catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. catch (Exception e) {
  21. System.out.println("down 没有正常关闭");
  22. }
  23. finally{
  24. if(bis!=null){
  25. try {
  26. bis.close();
  27. } catch (IOException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. if(bos!=null){
  32. try {
  33. bos.close();
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. }
  39. return null;
  40. //return "user/file/redownload";
  41. }

不过这里的异常好像拦截不住。 应该tomcat导致的(很多原因说是浏览器没有正常关闭导致的)。直接在控制台拦截不到, 感觉挺奇葩的

转载请注明作者和出处,并添加本页链接。
原文链接: //xiaochun.zrlog.com/62.html