SpringMVC文件上传
- 方式一
1 /* 2 3 * 通过流的方式上传文件 4 5 * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象 6 7 */ 8 9 @RequestMapping("fileUpload") 10 11 public String fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException { 12 13 14 15 16 17 //用来检测程序运行时间 18 19 long startTime=System.currentTimeMillis(); 20 21 System.out.println("fileName:"+file.getOriginalFilename()); 22 23 24 25 try { 26 27 //获取输出流 28 29 OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename()); 30 31 //获取输入流 CommonsMultipartFile 中可以直接得到文件的流 32 33 InputStream is=file.getInputStream(); 34 35 int temp; 36 37 //一个一个字节的读取并写入 38 39 while((temp=is.read())!=(-1)) 40 41 { 42 43 os.write(temp); 44 45 } 46 47 os.flush(); 48 49 os.close(); 50 51 is.close(); 52 53 54 55 } catch (FileNotFoundException e) { 56 57 // TODO Auto-generated catch block 58 59 e.printStackTrace(); 60 61 } 62 63 long endTime=System.currentTimeMillis(); 64 65 System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms"); 66 67 return "/success"; 68 69 }
- 方式二
1 /* 2 3 * 采用file.Transto 来保存上传的文件 4 5 */ 6 7 @RequestMapping("fileUpload2") 8 9 public String fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException { 10 11 long startTime=System.currentTimeMillis(); 12 13 System.out.println("fileName:"+file.getOriginalFilename()); 14 15 String path="E:/"+new Date().getTime()+file.getOriginalFilename(); 16 17 18 19 File newFile=new File(path); 20 21 //通过CommonsMultipartFile的方法直接写文件(注意这个时候) 22 23 file.transferTo(newFile); 24 25 long endTime=System.currentTimeMillis(); 26 27 System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms"); 28 29 return "/success"; 30 31 }
- 方式三
1 /* 2 3 *采用spring提供的上传文件的方法 4 5 */ 6 7 @RequestMapping("springUpload") 8 9 public String springUpload(HttpServletRequest request) throws IllegalStateException, IOException 10 11 { 12 13 long startTime=System.currentTimeMillis(); 14 15 //将当前上下文初始化给 CommonsMutipartResolver (多部分解析器) 16 17 CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver( 18 19 request.getSession().getServletContext()); 20 21 //检查form中是否有enctype="multipart/form-data" 22 23 if(multipartResolver.isMultipart(request)) 24 25 { 26 27 //将request变成多部分request 28 29 MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request; 30 31 //获取multiRequest 中所有的文件名 32 33 Iterator iter=multiRequest.getFileNames(); 34 35 36 37 while(iter.hasNext()) 38 39 { 40 41 //一次遍历所有文件 42 43 MultipartFile file=multiRequest.getFile(iter.next().toString()); 44 45 if(file!=null) 46 47 { 48 49 String path="E:/springUpload"+file.getOriginalFilename(); 50 51 //上传 52 53 file.transferTo(new File(path)); 54 55 } 56 57 58 59 } 60 61 62 63 } 64 65 long endTime=System.currentTimeMillis(); 66 67 System.out.println("方法三的运行时间:"+String.valueOf(endTime-startTime)+"ms"); 68 69 return "/success"; 70 71 }
转自:http://www.cnblogs.com/fjsnail/p/3491033.html