Ext + struts2 UploadDialog 文件上传

原文:http://hi.baidu.com/freespace520/blog/item/d789b40f2a6564226159f308.html/cmtid/54e0593169838aa35fdf0ed1
的插件部件,过滤下边的几种文件格式(jpg..)只有这几种格式才可以上传

     //文件上传
     var upload =new Ext.Button({
         text:'文件上传',
         iconCls:'icon-upload',
         listeners:{
            click:function(btnThis,eventobj){
              if(fondsId!=''){
                  dialog = new Ext.ux.UploadDialog.Dialog({
            autoCreate: true,  
            closable: true,  
            collapsible: false,  
            draggable: true,  
            minWidth: 400,        
            minHeight: 200,  
            width: 400,  
            height: 350,  
            permitted_extensions:

['JPG','jpg','jpeg','JPEG','GIF','gif','pdf','txt','zip','ZIP','doc','DOC'],  
            proxyDrag: true,  
            resizable: true,  
            constraintoviewport: true,  
            title: '文件上传',  
            url: '/as3/mount/upload_file.action',  
            reset_on_hide: false,  
            allow_close_on_upload: true
           });
              dialog.show();
              }else{
                 Ext.Msg.alert('提示','请先选择一个***再上传文件');
              }
          }
        }
     });

struts2 action 部分

因为在EXT中已经过滤了格式,所以在annotation的allowedTypes中就不用再写了,此该再重新设置是为了如

果在JSP页面时上传文件时用.

@InterceptorRef(value="fileUpload")
为struts2 的上传过滤器,因为在struts2的默认配置文件中没有配置此过滤器,所以用到上传一定要自己手

动再配置上.
@InterceptorRef(value="defaultStack")
struts2 的默认过滤器栈,一定要配置在上传过滤器的后边

再看下action 中的三个属性, file ,fileFileName,fileContentType; 是一定要配置的三个属性:文件

,文件名,文件类型;
file 不能更改,
fileFileName 可以根据自己页面的属性名自己修改,但是一定要有fileName,比如JSP页面<input

type='text' name="abc" value="文件名">

那么在action 中定义文件名属性时一定要叫abcFileName;
fileFileContentType 雷同;

更多细节请查看 apache: common-fileupload 子项目


@InterceptorRefs({@InterceptorRef(value="fileUpload", params=

{"allowedTypes","image/bmp,image/PNG,image/gif,image/JPEG,image/JPG,image/jpg,application/x-

zip-compressed","maximumSize","20971520"}
),@InterceptorRef(value="defaultStack")})
@SuppressWarnings("serial")
public class UploadFileAction extends ActionSupport {

private File file;

private String fileFileName;

private String fileContentType;

public String getFileContentType() {
   return fileContentType;
}

public void setFileContentType(String fileContentType) {
   this.fileContentType = fileContentType;
}

public String getFileFileName() {
   return fileFileName;
}

public void setFileFileName(String fileFileName) {
   this.fileFileName = fileFileName;
}

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

public File getFile(){
   return file;
}

public String execute(){
       System.out.println("begin upload file.... ");

 
   LinkPath link = LinkPath.newInstance();
   String dataPath = link.getdataPath();
 
   DateFormat format = new SimpleDateFormat("yyyyMMddHHmm");
        Date date=new Date();
        String dateDir = format.format(date);
        File f = new File(dataPath+"\\"+dateDir);
       
        if(!f.exists()){
        f.mkdirs();
        }
       
   File dataFile = new File(dataPath+"\\"+dateDir+"\\"+this.getFileFileName());
 
   try {
      //将第一个参数对应的 文件 copy 到 第二个参数对应的文件中
    FileUtil.copyFile(this.file,dataFile);
 
 
    if(dataFile.exists()){
   
     String fileType = dataFile.getPath().substring

(dataFile.getPath().lastIndexOf("."),dataFile.getPath().length());
   
     if(".zip".equals(fileType)||".ZIP".equals(fileType)){
      UpZIP zip = new UpZIP();
    
      zip.unzip(dataFile.getPath(), dataPath+"\\"+dateDir);
    
      dataFile.delete();
     }
    }
  
    Struts2Utils.renderText("{success:true,message:'上传成功'}");
   } catch (IOException e) {
    Struts2Utils.renderText("{success:flase,message:'失败'}");
    e.printStackTrace();
   }
   return null;
}
}

你可能感兴趣的:(apache,jsp,F#,Blog,ext)