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

原文地址:https://www.cnblogs.com/yixiu868/p/6365937.html