前台:

<%@ page language=           "java"            contentType=           "text/html; charset=utf-8"          


                      pageEncoding=           "utf-8"           %>          


           <!DOCTYPE html PUBLIC            "-//W3C//DTD HTML 4.01 Transitional//EN"            "http://www.w3.org/TR/html4/loose.dtd"           >          


           <html>          


           <head>          


           <meta http-equiv=           "Content-Type"            content=           "text/html; charset=utf-8"           >          


           <title>Insert title here</title>          


           </head>          


           <body>          


           <form name=           "serForm"            action=           "/SpringMVC006/fileUpload"            method=           "post"             enctype=           "multipart/form-data"           >          


           <h1>采用流的方式上传文件</h1>          


           <input type=           "file"            name=           "file"           >          


           <input type=           "submit"            value=           "upload"           />          


           </form>          


                      


           <form name=           "Form2"            action=           "/SpringMVC006/fileUpload2"            method=           "post"             enctype=           "multipart/form-data"           >          


           <h1>采用multipart提供的file.transfer方法上传文件</h1>          


           <input type=           "file"            name=           "file"           >          


           <input type=           "submit"            value=           "upload"           />          


           </form>          


                      


           <form name=           "Form2"            action=           "/SpringMVC006/springUpload"            method=           "post"             enctype=           "multipart/form-data"           >          


           <h1>使用spring mvc提供的类的方法上传文件</h1>          


           <input type=           "file"            name=           "file"           >          


           <input type=           "submit"            value=           "upload"           />          


           </form>          


           </body>          


           </html>




配置:

<!-- 多部分文件上传 -->          


           <bean id=           "multipartResolver"            class           =           "org.springframework.web.multipart.commons.CommonsMultipartResolver"           >          


                      <property name=           "maxUploadSize"            value=           "104857600"            />          


                      <property name=           "maxInMemorySize"            value=           "4096"            />          


                      <property name=           "defaultEncoding"            value=           "UTF-8"           ></property>          


           </bean>



 

后台:

方式一:

/*          


                      * 通过流的方式上传文件          


                      * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象          


                      */          


                      @RequestMapping           (           "fileUpload"           )          


                      public            String  fileUpload(           @RequestParam           (           "file"           ) CommonsMultipartFile file)            throws            IOException {          


                      


                      


                      //用来检测程序运行时间          


                      long             startTime=System.currentTimeMillis();          


                      System.out.println(           "fileName:"           +file.getOriginalFilename());          


                      


                      try            {          


                      //获取输出流          


                      OutputStream os=           new            FileOutputStream(           "E:/"           +           new            Date().getTime()+file.getOriginalFilename());          


                      //获取输入流 CommonsMultipartFile 中可以直接得到文件的流          


                      InputStream is=file.getInputStream();          


                      int            temp;          


                      //一个一个字节的读取并写入          


                      while           ((temp=is.read())!=(-           1           ))          


                      {          


                      os.write(temp);          


                      }          


                      os.flush();          


                      os.close();          


                      is.close();          


                      


                      }            catch            (FileNotFoundException e) {          


                      // TODO Auto-generated catch block          


                      e.printStackTrace();          


                      }          


                      long             endTime=System.currentTimeMillis();          


                      System.out.println(           "方法一的运行时间:"           +String.valueOf(endTime-startTime)+           "ms"           );          


                      return            "/success"           ;           


                      }



 方式二:

 

/*          


                      * 采用file.Transto 来保存上传的文件          


                      */          


                      @RequestMapping           (           "fileUpload2"           )          


                      public            String  fileUpload2(           @RequestParam           (           "file"           ) CommonsMultipartFile file)            throws            IOException {          


                      long             startTime=System.currentTimeMillis();          


                      System.out.println(           "fileName:"           +file.getOriginalFilename());          


                      String path=           "E:/"           +           new            Date().getTime()+file.getOriginalFilename();          


                      


                      File newFile=           new            File(path);          


                      //通过CommonsMultipartFile的方法直接写文件(注意这个时候)          


                      file.transferTo(newFile);          


                      long             endTime=System.currentTimeMillis();          


                      System.out.println(           "方法二的运行时间:"           +String.valueOf(endTime-startTime)+           "ms"           );          


                      return            "/success"           ;           


                      }




 

 方式三:

 

/*          


                      *采用spring提供的上传文件的方法          


                      */          


                      @RequestMapping           (           "springUpload"           )          


                      public            String  springUpload(HttpServletRequest request)            throws            IllegalStateException, IOException          


                      {          


                      long             startTime=System.currentTimeMillis();          


                      //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)          


                      CommonsMultipartResolver multipartResolver=           new            CommonsMultipartResolver(          


                      request.getSession().getServletContext());          


                      //检查form中是否有enctype="multipart/form-data"          


                      if           (multipartResolver.isMultipart(request))          


                      {          


                      //将request变成多部分request          


                      MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;          


                      //获取multiRequest 中所有的文件名          


                      Iterator iter=multiRequest.getFileNames();          


                      


                      while           (iter.hasNext())          


                      {          


                      //一次遍历所有文件          


                      MultipartFile file=multiRequest.getFile(iter.next().toString());          


                      if           (file!=           null           )          


                      {          


                      String path=           "E:/springUpload"           +file.getOriginalFilename();          


                      //上传          


                      file.transferTo(           new            File(path));          


                      }          


                      


                      }          


                      


                      }          


                      long             endTime=System.currentTimeMillis();          


                      System.out.println(           "方法三的运行时间:"           +String.valueOf(endTime-startTime)+           "ms"           );          


                      return            "/success"           ;           


                      }