posts - 241,  comments - 116,  trackbacks - 0

          1 頁面文件
             <!-- Ext JS Files -->
          <link rel="stylesheet" type="text/css" href="/extjs4-file-upload-spring/extjs/resources/css/ext-all.css" />
              <script type="text/javascript" src="/extjs4-file-upload-spring/extjs/bootstrap.js"></script>

          <!-- file upload form -->
          <script src="/extjs4-file-upload-spring/js/file-upload.js"></script>

          </head>struts獲取各種表單的數據
          <body>

          Click on "Browse" button (image) to select a file and click on Upload button


          <div id="fi-form" style="padding:25px;"></div>
          </body>

          2 EXTjs的文件
             Ext.onReady(function(){

              Ext.create('Ext.form.Panel', {
                  title: 'File Uploader',
                  width: 400,
                  bodyPadding: 10,
                  frame: true,
                  renderTo: 'fi-form',   
                  items: [{
                      xtype: 'filefield',
                      name: 'file',
                      fieldLabel: 'File',
                      labelWidth: 50,
                      msgTarget: 'side',
                      allowBlank: false,
                      anchor: '100%',
                      buttonText: 'Select a File...'
                  }],

                  buttons: [{
                      text: 'Upload',
                      handler: function() {
                          var form = this.up('form').getForm();
                          if(form.isValid()){
                              form.submit({
                                  url: 'upload.action',
                                  waitMsg: 'Uploading your file...',
                                  success: function(fp, o) {
                                      Ext.Msg.alert('Success', 'Your file has been uploaded.');
                                  }
                              });
                          }
                      }
                  }]
              });

          });

          3 上傳文件的bean
          import org.springframework.web.multipart.commons.CommonsMultipartFile;


          public class FileUploadBean {

              private CommonsMultipartFile file;

              public CommonsMultipartFile getFile() {
                  return file;
              }

              public void setFile(CommonsMultipartFile file) {
                  this.file = file;
              }
          }

           
          4 為了讓extjs顯示信息,再設計一個bean
          public class ExtJSFormResult {

              private boolean success;
              
              public boolean isSuccess() {
                  return success;
              }
              public void setSuccess(boolean success) {
                  this.success = success;
              }
              
              public String toString(){
                  return "{success:"+this.success+"}";
              }
          }
            這里其實是返回是否成功

          5 controller層
            
          @Controller
          @RequestMapping(value = "/upload.action")
          public class FileUploadController {

              @RequestMapping(method = RequestMethod.POST)
              public @ResponseBody String create(FileUploadBean uploadItem, BindingResult result){

                  ExtJSFormResult extjsFormResult = new ExtJSFormResult();
                  
                  if (result.hasErrors()){
                      for(ObjectError error : result.getAllErrors()){
                          System.err.println("Error: " + error.getCode() +  " - " + error.getDefaultMessage());
                      }
                      
                      //set extjs return - error
                      extjsFormResult.setSuccess(false);
                      
                      return extjsFormResult.toString();
                  }

                  // Some type of file processing...
                  System.err.println("-------------------------------------------");
                  System.err.println("Test upload: " + uploadItem.getFile().getOriginalFilename());
                  System.err.println("-------------------------------------------");
                   if(uploadItem.getFile().getSize()>0){                   
                          try {    
                              SaveFileFromInputStream(uploadItem.getFile().getInputStream(),"D://",uploadItem.getFile().getOriginalFilename());    
                          } catch (IOException e) {    
                              System.out.println(e.getMessage());    
                              return null;    
                          }    
                      }    
                  //set extjs return - sucsess
                  extjsFormResult.setSuccess(true);
                  
                  return extjsFormResult.toString();
              }
              
              /* **保存文件   
              
                 * @param stream   
                 * @param path   
                 * @param filename   
                 * @throws IOException   
                 */   
                public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException    
                {          
                 FileOutputStream fs=new FileOutputStream(path + "/"+ filename);
                 byte[]  buffer=new byte[1024*1024];
                 int bytesum = 0;    
                    int byteread = 0;
                      while ((byteread=stream.read())!=-1)
                      {
                          bytesum+=byteread;
                          
                            fs.write(buffer,0,byteread);    
                            fs.flush();    
                          
                      }
                      fs.close();    
                      stream.close();    
                }    
            可以看到,當出現錯誤時,extjsFormResult.setSuccess(false);
          return extjsFormResult.toString();
            這兩句返回給前端ext js處理。
            最后就是配置MVC了
           
          <!-- Activates various annotations to be detected in bean classes -->
              <context:annotation-config />

              <!-- Scans the classpath of this application for @Components to deploy as beans -->
              <context:component-scan base-package="com.loiane"/>

              <!-- Configures Spring MVC -->
              <import resource="mvc-config.xml"/>

              <!-- Configure the multipart resolver -->
              <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                  <!-- one of the properties available; the maximum file size in bytes -->
                  <property name="maxUploadSize" value="100000"/>
                
              </bean>
            設置文件大小限制
            一個很奇怪的問題是,在ie 7下,好象有點問題,待解決,但在firefox和chrome下都沒問題,這個extjs 真怪,不用ext,普通的spring mvc是沒問題的哦
          posted on 2011-07-27 10:26 墻頭草 閱讀(2584) 評論(2)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 枣阳市| 姚安县| 玛沁县| 孟津县| 钦州市| 昌平区| 大同市| 西丰县| 曲阳县| 克拉玛依市| 平利县| 罗田县| 五原县| 石渠县| 武川县| 开江县| 醴陵市| 丹凤县| 将乐县| 龙里县| 鸡西市| 都昌县| 西安市| 巨鹿县| 宝山区| 南昌县| 江永县| 忻城县| 镇康县| 曲靖市| 岳池县| 卢氏县| 湖南省| 淮南市| 周宁县| 张家口市| 观塘区| 麻城市| 铁岭县| 定州市| 龙门县|