ExtJs + Struts2文件上传

    技术2024-12-22  50

    ExtJs表单代码: 

    Java代码  Ext.onReady(function() {      //定义数据集对象      var mystore = new Ext.data.Store({          autoLoad : true,          sortInfo : {              field : "uploadtime",              direction : "DESC"          },          reader : new Ext.data.JsonReader({              totalRecords : "results",              root : "dataList",              id : 'id',              fields : [{                  name : 'id'              }, {                  name : 'realName'              }, {                  name : 'contentType'              }, {                  name : 'size'              }, {                  name : 'uploadtime',                  sortable : true              }]          }),          proxy : new Ext.data.HttpProxy({              url : 'file_getAll.action',              method : 'POST'          })      })      //创建工具栏组件      var toolbar = new Ext.Toolbar([{          text : '上传文件',          iconCls : 'add',          handler : showAdd      },              //          {text : '修改信息',iconCls:'option',handler:showModify},              {                  text : '删除文件',                  iconCls : 'remove',                  handler : showDelete              }]);      //创建Grid表格组件      var cb = new Ext.grid.CheckboxSelectionModel()      var myGrid = new Ext.grid.GridPanel({          applyTo : 'grid-div',          frame : true,          tbar : toolbar,          store : mystore,          stripeRows : true,          autoScroll : true,          viewConfig : {              autoFill : true          },          sm : cb,          columns : [//配置表格列          new Ext.grid.RowNumberer({              header : '行号',              width : 40          }),     //表格行号组件                  cb, {                      header : "文件编号",                      width : 40,                      dataIndex : 'id',                      sortable : true                  }, {                      header : "文件名",                      width : 100,                      dataIndex : 'realName',                      sortable : true                  }, {                      header : "文件类型",                      width : 50,                      dataIndex : 'contentType',                      sortable : true                  }, {                      header : "文件大小",                      width : 50,                      dataIndex : 'size',                      sortable : true                  }, {                      header : "发布时间",                      width : 80,                      dataIndex : 'uploadtime',                      sortable : true                  }]      })      //创建新增或修改通告信息的form表单      Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); // 设置缓存      Ext.QuickTips.init();      Ext.form.Field.prototype.msgTarget = 'side';//统一指定错误信息提示方式        var myForm = new Ext.form.FormPanel({          width : 380,          height : 200,          frame : true,          monitorValid:true,          fileUpload:true//需上传文件          url : 'file_upload.action',//请求的url地址          method:'POST',          items : [{              xtype : 'textfield',              name : 'realname',              fieldLabel : '文件备注',              allowBlank:false,              emptyText:'请输入文件的文件名或其内容关键字……',              blankText:'文件备注不能为空!'          }, {              xtype:'textfield',              fieldLabel : '选择文件',              name : 'attachment',              //关键              inputType : 'file',              allowBlank:false,              blankText:'请选择文件!',              emptyText:'请选择上传文件'          }],          buttons : [{              formBind:true,              text : '上传',              handler:function(){                  myForm.form.submit({                      clientValidation : true,//进行客户端验证                      waitMsg : '正在上传文件,请稍等……',//提示信息                      waitTitle : '提示',//标题                      success : function(form, action) {//加载成功的处理函数                          win.hide();                          myGrid.getStore().reload();                          Ext.Msg.alert('提示''上传成功');                      },                      failure : function(form, action) {//加载失败的处理函数                          Ext.Msg.alert('提示''上传失败');                      }                  });                  }          }, {              text : '关闭',              handler:function(){                  win.hide();              }          }]      });      //创建弹出窗口      var win = new Ext.Window({          layout : 'fit',          width : 380//380          closeAction : 'hide',          height : 200//280          resizable : false,          shadow : true,          modal : true,          closable : true,          bodyStyle : 'padding:5 5 5 5',          animCollapse : true,          items : [myForm]      });      //显示上传窗口      function showAdd() {          myForm.form.reset();          myForm.isAdd = true;          win.setTitle("文件上传");          win.show();      }      //显示删除对话框      function showDelete() {          var IdList = geIdList();          var num = IdList.length;          if (num == 0) {              return;          }          Ext.MessageBox.confirm("提示""您确定要删除所选文件吗?", function(btnId) {              if (btnId == 'yes') {                  Delete(IdList);              }          })      }      //删除信息      function Delete(IdList) {          var fileIds = IdList;          var msgTip = Ext.MessageBox.show({              title : '提示',              width : 250,              msg : '正在删除文件请稍后......'          });          Ext.Ajax.request({              url : 'file_del.action',              params : {                  fileIds : fileIds              },              method : 'POST',              success : function(response, options) {                  msgTip.hide();                  var result = Ext.util.JSON.decode(response.responseText);                  if (result.success) {                      //服务器端数据成功删除后,同步删除客户端列表中的数据                      for (var i = 0; i < IdList.length; i++) {                          var index = mystore.find('id', IdList[i]);                          if (index != -1) {                              var rec = mystore.getAt(index)                              mystore.remove(rec);                          }                      }                      Ext.Msg.alert('提示''删除文件成功。');                  } else {                      Ext.Msg.alert('提示''删除文件失败!');                  }              },              failure : function(response, options) {                  msgTip.hide();                  Ext.Msg.alert('提示''删除文件请求失败!');              }          });      }      //数据修改后,同步更新信息列表信息      function updateList(InfoId) {          var fields = getFormFieldsObj(InfoId);          var index = mystore.find('id', fields.id);          if (index != -1) {              var item = mystore.getAt(index);              for (var fieldName in fields) {                  item.set(fieldName, fields[fieldName]);              }              mystore.commitChanges();          }      }        //取得表单数据      function getFormFieldsObj(InfoId) {          var fields = myForm.items;          var obj = {};          for (var i = 0; i < fields.length; i++) {              var item = fields.itemAt(i);              var value = item.getValue();              obj[item.name] = value;          }          if (Ext.isEmpty(obj['id'])) {              obj['id'] = InfoId;          }          return obj;      }        //取得所选信息      function geIdList() {          var recs = myGrid.getSelectionModel().getSelections();          var list = [];          if (recs.length == 0) {              Ext.MessageBox.alert('提示''请选择要进行操作的文件!');          } else {              for (var i = 0; i < recs.length; i++) {                  var rec = recs[i];                  list.push(rec.get('id'));              }          }          return list;      }  });   Acion代码:  Java代码  package com.jyxx.action;    import java.io.File;  import java.util.ArrayList;  import java.util.List;    import org.apache.commons.io.FileUtils;  import org.apache.struts2.ServletActionContext;  import org.apache.struts2.json.annotations.JSON;    import com.jyxx.model.Ufile;  import com.jyxx.serviceimpl.fileServiceImpl;  import com.jyxx.utils.GetDate;  import com.jyxx.utils.UploadUtil;  import com.opensymphony.xwork2.ActionSupport;    public class FileAction extends ActionSupport {      /**      *       */      private static final long serialVersionUID = 1L;      private File attachment;      private String fileName;      private String contentType;      private String size;      private String realname;      private String[] fileIds;      private boolean flag = false;      private int results;      private List<Ufile> dataList = new ArrayList<Ufile>();      private fileServiceImpl impl = new fileServiceImpl();                  public String getAll(){          dataList = impl.getAllFiles();          results = dataList.size();          return SUCCESS;      }            @SuppressWarnings("deprecation")      public String upload() throws Exception {          String realPath = ServletActionContext.getRequest().getRealPath(                  "/upload");          Ufile afile = new Ufile();          String tname = UploadUtil.generateFileName(this.fileName);          String tdir = realPath + "//" + tname;          long s = this.attachment.length();          if((1024 * 1024 * 1024) <= s){              size = s /(1024 * 1024 * 1024) + "GB";          }else if((1024 * 1024) <= s){              size = s /(1024 * 1024) + "MB";          }else if(1024 <= s){              size = s /1024 + "KB";          }else{              size = s + "B";          }          File targetfile = new File(realPath, tname);          FileUtils.copyFile(attachment, targetfile);          afile.setFileName(tdir);          afile.setContentType(this.contentType);          afile.setRealName(realname);          afile.setSize(size);          GetDate date = new GetDate();          afile.setUploadtime(date.getDate());          this.flag = impl.add(afile);          return NONE;      }            public String del(){          for(int i=0;i<fileIds.length;i++){              int id = Integer.parseInt(fileIds[i]);              File tem_file = new File(impl.getOne(id).getFileName());              tem_file.delete();              flag = impl.del(id);          }          return SUCCESS;      }        public String getSize() {          return size;      }        public void setSize(String size) {          this.size = size;      }        public String getRealname() {          return realname;      }        public void setRealname(String realname) {          this.realname = realname;      }        public String[] getFileIds() {          return fileIds;      }        public void setFileIds(String[] fileIds) {          this.fileIds = fileIds;      }            @JSON(name="success")      public boolean isFlag() {          return flag;      }            public void setFlag(boolean flag) {          this.flag = flag;      }        public int getResults() {          return results;      }        public void setResults(int results) {          this.results = results;      }            public String getFileName() {          return fileName;      }        public void setFileName(String fileName) {          this.fileName = fileName;      }        public String getContentType() {          return contentType;      }        public void setContentType(String contentType) {          this.contentType = contentType;      }        public void setAttachment(File attachment) {          this.attachment = attachment;      }        public void setAttachmentFileName(String attachmentFileName) {          this.setFileName(attachmentFileName);      }        public void setAttachmentContentType(String attachmentContentType) {          this.setContentType(attachmentContentType);      }        public List<Ufile> getDataList() {          return dataList;      }        public void setDataList(List<Ufile> dataList) {          this.dataList = dataList;      }            }  

    最新回复(0)