和爪哇一起走過的日子

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            12 隨筆 :: 0 文章 :: 6 評論 :: 0 Trackbacks

          使用spring MVC框架進行文件上傳,步驟如下:

          1:配置web.xml文件。定義DispatcherServlet,DispatcherServlet處理的請求(.htm)也在同一個web.xml文件里使用url-mapping定義映射。

           <servlet>
            <servlet-name>upload</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <load-on-startup>1</load-on-startup>
           </servlet>
           
           <servlet-mapping>
            <servlet-name>upload</servlet-name>
            <url-pattern>*.htm</url-pattern>
           </servlet-mapping>
          2:定義upload-servlet.xml文件。
          <bean id="multipartResolver"
                 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                  <!-- set the max upload size100MB -->
                  <property name="maxUploadSize">
                  <value>104857600</value>
              </property>
              <property name="maxInMemorySize">
                  <value>4096</value>
              </property>
             </bean>
           <bean id="urlMapping"
            class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">       
           <property name="mappings">           
            <props>               
            <prop key="/upload.htm">uploadController</prop>           
            </props>       
           </property>   
           </bean>
               <bean id="uploadController" class="FileUploadController">
                <property name="commandClass"><value>FileUploadBean</value></property>
                <property name="uploadDir"><value>E:/</value></property>
                <property name="formView"><value>fail</value></property>
            <property name="successView"><value>confirmation</value></property>
          </bean>  
          3:定義控制類,commandClass及方法。控制類中最重要的方法是initBinder()它給spring注冊了一個編輯器對
          request中的multipart實體進行處理,如果沒有這個方法,上傳將不能進行。
          <--------------------------控制類------------------->
          public class FileUploadController extends SimpleFormController {
              private static Log log =
                  LogFactory.getLog(FileUploadController.class);
              private String uploadDir;//上傳文件路徑

              protected ModelAndView onSubmit(HttpServletRequest request,
                      HttpServletResponse response, Object cmd, BindException errors)
                      throws Exception {

                      FileUploadBean bean = (FileUploadBean) cmd;
                      byte[] bytes = bean.getFile();
                    
                      //cast to multipart file so we can get additional information
                      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
                      CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");

                      String uploadDir = this.getUploadDir();

                      File dirPath = new File(uploadDir);
                      if (!dirPath.exists()) {
                          dirPath.mkdirs();
                      }
                      String sep = System.getProperty("file.separator");
                      if (log.isDebugEnabled()) {
                          log.debug("uploading to: " + uploadDir + sep +
                          file.getOriginalFilename());
                          }
                      File uploadedFile = new File(uploadDir + sep
                              + file.getOriginalFilename());
                      FileCopyUtils.copy(bytes, uploadedFile);
                      System.out.println("********************************");
                      System.out.println(uploadedFile.getAbsolutePath());
                      System.out.println(bytes.length);
                      System.out.println("********************************");
                     
               
                  return new ModelAndView(getSuccessView() + ".jsp");
              }

              protected void initBinder(HttpServletRequest request,
                      ServletRequestDataBinder binder) throws ServletException {
                  binder.registerCustomEditor(byte[].class,
                          new ByteArrayMultipartFileEditor());
              }
              public void setUploadDir(String uploadDir){
                  this.uploadDir = uploadDir;
              }
              public String getUploadDir(){
                  return this.uploadDir;
              }
          }
          <--------------------------控制類------------------------->
          <---------------------定義commandClass-------------------->
          public class FileUploadBean {

              private byte[] file;

              public void setFile(byte[] file) {
                  this.file = file;
              }

              public byte[] getFile() {
                  return file;
              }

          }
          <---------------------定義commandClass-------------------->
          4:定義一個form表單index.jsp
          <form method="post" action="upload.htm" enctype="multipart/form-data">
          <input type="file" name="file"/>
          <input type="submit"/>
          5:定義confirmation.jsp及fail.jsp
          confirmation.jsp如下:
          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title>
          successView
          </title>
          </head>
          <body bgcolor="#ffffff">
          <h1>
          Upload Successful
          </h1>
          </body>
          </html>

          fail.jsp如下:
          <html>
          <head>
          <title>Upload a file please</title>
          </head>
          <body>
          <h1>no file,Please upload a file</h1>
          <form method="post" action="uploadfile.htm" enctype="multipart/form-data">
          <input type="file" name="file"/>
          <input type="submit"/>
          </form>
          </body>
          </html>
          6:運行tomcat。
          預覽 ie里面:http://localhost/springmvc/index.jsp
          注:
          a:文件目錄為tomcat-HOME/webapps/springmvc/
          .jsp文件都放在根目錄下,.class文件放在/WEB-INF/classes/中

          其他文件放在/WEB-INF/里面。
          b:如果連上面的你都有疑問,那還是去看看spring的基礎知識吧。

          posted on 2005-09-02 11:04 撲撲 閱讀(27967) 評論(1)  編輯  收藏 所屬分類: Spring

          評論

          # re: 使用spring MVC框架進行文件上傳 2006-01-11 09:31 yeafee
          從別人的房間拿來的,就該寫在源來之處.  回復  更多評論
            

          主站蜘蛛池模板: 齐齐哈尔市| 涟源市| 常宁市| 望城县| 准格尔旗| 宁安市| 忻州市| 城固县| 弥渡县| 沭阳县| 泰安市| 赤壁市| 巴青县| 台东市| 丰镇市| 磐石市| 丰县| 新建县| 平和县| 仙桃市| 郎溪县| 华容县| 茌平县| 壶关县| 札达县| 吉安市| 七台河市| 新巴尔虎右旗| 呈贡县| 密山市| 特克斯县| 英山县| 汽车| 随州市| 洛南县| 莱芜市| 仁化县| 竹北市| 上杭县| 石城县| 永春县|