标签:
package com.fm.action; import java.sql.*; import org.apache.struts2.ServletActionContext; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer;<pre name="code" class="javascript"> var user_name='<%=username %>'; var htmldata = ""; var defultHtmlData = ""; var defultData = []; var defultQueryHtml = ""; var autoloadcontrol; var idList = ""; var nowCm; var store; var store1; var selectedTableName = ""; var selectedUpTableName = ""; var selectedTypeList = ""; var selectedUpTypeList = ""; var upIdList = ""; var upValueList = ""; var fields = []; var rdItems = []; var rdConfig = {}; var grids; var curWwwPath=window.document.location.href; var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); var localhostPaht=curWwwPath.substring(0,pos); var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); var baseUrl = localhostPaht + projectName; var viewFile; var page_size = 15;//查询列表每一页显示数据条数 var maxSize="20971520";//附件上传大小限制 1M=1048576字节 var allowUploadFile =["jpg","gif","png","bmp","jpeg","pdf","doc","docx","xls","xlsx","ppt","ceb","txt"]; //允许上传的文件类型 var link = { getTreeData : baseUrl + "/pages/fm_getTreeData.do", formQuery : baseUrl + "/pages/fm_formQuery.do", getformQueryData : baseUrl + "/pages/fm_getConditionData.do", getFileList : baseUrl + "/pages/fm_getFileList.do", getDefultData : baseUrl + "/pages/fm_getDefultData.do", getAllDataRead : baseUrl + "/pages/fm_getAllDataRead.do", delFile : baseUrl + "/pages/fm_delFile.do", getOffice2HtmlPath : baseUrl + "/pages/fm_getOffice2HtmlPath.do", uploadFile : baseUrl + "/pages/up_upload.do" }; function getDefultData(){//打开页面时,获得全局条件 $.ajax({ type:"POST", url: link.getDefultData, success:function(data){ if(data[0].name=="err"){ try{ Ext.getCmp("toppanel").body.update("<form name=\"queryform\" id=\"queryform\" action=\""+link.formQuery+"\" method=\"post\"></form>"); }catch(e){ } return; } defultData = []; for(var i=0;i<data.length;i++){ defultData.push(data[i]); } setDefultQueryHtml(data);//设置显示全局条件 }, dataType:"json" }); } function setDefultQueryHtml(data){//打开页面时 显示全局条件 defultQueryHtml = ""; for(var i=0;i<data.length;i++){ defultQueryHtml += "<div class=\"formdiv\"><div class=\"textdiv\">"+data[i].name+":</div>"; defultQueryHtml += "<input name=\""+data[i].enname+"\" id=\""+data[i].enname+"\" text=\""+data[i].name+"\" class=\"valuediv\" type=\"text\"/></div>" } defultHtmlData = "<form name=\"queryform\" id=\"queryform\" action=\""+link.formQuery+"\" method=\"post\">"+defultQueryHtml+"</form>"; Ext.getCmp("toppanel").body.update(defultHtmlData); } function delFile(){ var guid = grids.getSelectionModel().getSelected().get("guid"); var fileType = grids.getSelectionModel().getSelected().get("type"); var delFileName = grids.getSelectionModel().getSelected().get("filename"); if(confirm("确认删除 " + delFileName +" 吗?")){ $.ajax({ type: 'POST', url: link.delFile, data:{guid:guid,type:fileType,table:selectedTableName}, success:function(data){ if(data=="true"){ grids.getStore().remove(grids.getSelectionModel().getSelected()); alert("删除成功"); }else{ alert("删除失败"); } }, dataType:"text" }); } } Ext.onReady(function(){ Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = "side"; viewFile =function(){ var guid = grids.getSelectionModel().getSelected().get("guid"); var fileType = grids.getSelectionModel().getSelected().get("type"); var FileName = grids.getSelectionModel().getSelected().get("filename"); var htmlPath = ""; var t = ""; if(fileType=="JPG"||fileType=="PNG"||fileType=="JPEG"||fileType=="GIF"||fileType=="BMP"){ t = 1;//图片格式 openViewWin(FileName,fileType,guid,t,htmlPath); }else if(fileType=="TXT"){ t = 2;//文本格式 openViewWin(FileName,fileType,guid,t,htmlPath); }else if(fileType=="PDF"){ t = 4;//PDF格式 openViewWin(FileName,fileType,guid,t,htmlPath); }else if(fileType=="DOC"||fileType=="DOCX"||fileType=="XLS"||fileType=="XLSX"){ t = 3//word,excel格式 viewMask.show() $.ajax({ type:"POST", url: link.getOffice2HtmlPath, data:{type:fileType,guid:guid}, success:function(data){ if(data=="err"){ alert("预览失败") viewMask.hide(); return; }else{ viewMask.hide() htmlPath = data; openViewWin(FileName,fileType,guid,t,htmlPath); } }, dataType:"text" }); }else{ alert("此格式不支持在线浏览") return; } } var viewMask = new Ext.LoadMask(Ext.getBody(),{ msg:"正在打开文件请稍后...", removeMask:true }); function openViewWin(FileName,fileType,guid,t,htmlPath){ var awidth = document.body.clientWidth-65; var aheight = document.body.clientHeight-115; var filePath = baseUrl+"/AffixFiles/FileManager/"+guid+"."+fileType; var hd; if(t=="1"){//图片格式 hd = "<img src="+filePath+">"; }else if(t=="2"){//文本格式 hd = "<iframe src="+filePath+" name=iframe1 width="+awidth+" height="+aheight+"></iframe>"; }else if(t=="3"){//word hd = "<iframe src="+htmlPath+" name=iframe1 width="+awidth+" height="+aheight+"></iframe>"; }else if(t=="4"){//PDF hd = "<iframe src="+filePath+" name=iframe1 width="+awidth+" height="+aheight+"></iframe>"; } var viewPanel = new Ext.Panel({ id:"viewPanel", border:true, autoScroll:true, layout:"anchor", width:document.body.clientWidth-45, height:document.body.clientHeight-95, frame:true, html:hd }) var viewWin = new Ext.Window({ title :"文件预览: "+FileName+"."+fileType.toLowerCase(), id : 'viewWin', border : false, draggable:false, resizable:false, width : document.body.clientWidth-30, height : document.body.clientHeight-30, plain : true, modal : true, buttonAlign:'center', items:[viewPanel], buttons:[{ text: '关闭', handler: function(){ viewWin.close() }}] }) viewWin.show() } function selectUptree(){ try{ var path = mytree.getSelectionModel().getSelectedNode().getPath(); Ext.getCmp("mytree1").selectPath(path); var node = Ext.getCmp("mytree1").getSelectionModel().getSelectedNode(); if(node.attributes.text!="附件分类"){ getUpFatherNodeList(node); autoloadcontrol.body.update(""); setUploadForm(node.attributes.id); } }catch(e){ return; } } function dt(){//根据所选分类刷新列表表头 var idListArr = idList.split("|"); var cmItems = []; var cmConfig = {}; cmItems.push(new Ext.grid.RowNumberer()); cmItems.push({id:'id', header: "id", width: 100,hidden:true, hideable:false,sortable: false, dataIndex: 'id',renderer:tips}); cmItems.push({id:'filename', header: "附件名称", width: 200, sortable: false, dataIndex: 'filename',renderer:tips}); try{ var form=document.getElementById("queryform"); for(var i=0;i<form.length;i++){ if (form[i].type == "text"){ var cmConfig = {id:form[i].name,header:form[i].text,width:100,sortable:false,dataIndex:form[i].name,renderer:tips}; cmItems.push(cmConfig); } } }catch(e){ } cmItems.push({id:'type', header: "附件类型", width: 50, sortable: false, dataIndex: 'type',renderer:tips}); cmItems.push({id:'filepath', header: "文件路径", width: 0,hidden:true, sortable: false,hideable:false, dataIndex: 'filepath',renderer:tips}); cmItems.push({id:'guid', header: "guid", width: 0,hidden:true, sortable: false,hideable:false, dataIndex: 'guid',renderer:tips}); cmItems.push({id:'types', header: "types", width: 0,hidden:true, sortable: false,hideable:false, dataIndex: 'types',renderer:tips}); cmItems.push(time); cmItems.push(cz); sm = new Ext.grid.ColumnModel(cmItems); grids.reconfigure(store,sm); } function setUpData(){//获得上传时form表单中的控件ID与填写内容 upIdList = ""; upValueList = ""; var form = Ext.getCmp("fp").getForm(); for(var i=0;i<form.items.items.length;i++){ if (form.items.items[i].id != "form-file"){ upIdList += form.items.items[i].name+"|"; if(form.items.items[i].getValue().trim()==""){ upValueList += "empty|";//内容为空时添加empty }else{ upValueList += form.items.items[i].getValue()+"|" } } } upIdList = upIdList.substring(0, upIdList.length-1); upValueList = upValueList.substring(0, upValueList.length-1); } function checkUploadFile(path){//检查上传文件后缀 var type = path.substring(path.lastIndexOf(".")+1,path.length); return contains(allowUploadFile, type); } function contains(arr, obj) { var i = arr.length; while (i--){ if(arr[i]===obj){ return true; } } return false; } function getIsAllCondition(){//上传时获得全局条件 if(defultData.length>0){ for(var i=0;i<defultData.length;i++){ var obj = "new Ext.form.TextField({fieldLabel:\""+defultData[i].name+"\",name:\""+defultData[i].enname+"\",id:\""+defultData[i].enname+"\",emptyText:\"请输入内容\",width:\"300\",labelStyle:\"text-align:right;\"})"; autoloadcontrol1.add(eval(obj)) } autoloadcontrol1.body.update(""); autoloadcontrol1.doLayout(); } } function getQueryForm(id){//查询前根据选择树节点ID获得相应的自定义查询条件 $.ajax({ type:"POST", url: link.getformQueryData, data:{id:id}, success:function(data){ if(data[0].name=="err"){ Ext.getCmp("toppanel").body.update("<form name=\"queryform\" id=\"queryform\" action=\""+link.formQuery+"\" method=\"post\"></form>"); data = ""; return; } setQueryData(data);//设置查询条件 }, dataType:"json" }); } function setUploadForm(id){//上传前根据选择树节点ID获得相应的自定义查询条件 $.ajax({ type:"POST", url: link.getformQueryData, data:{id:id}, success:function(data){ if(data[0].name=="err"){ autoloadcontrol.body.update("无"); return; } setUploadFormData(data);//设置查询条件 }, dataType:"json" }); } function setUploadFormData(data){//设置自定义查询条件 for(var i=0;i<data.length;i++){ var obj = "new Ext.form.TextField({xtype:\"TextField\",fieldLabel:\""+data[i].name+"\",name:\""+data[i].enname+"\",id:\""+data[i].enname+"\",emptyText:\"请输入内容\",width:\"300\",labelStyle:\"text-align:right;\"})"; autoloadcontrol.add(eval(obj)) } autoloadcontrol.doLayout(); } function query(){ dt();//设置列表表头信息 getQueryList();//获取查询列表的ID信息 var valueList = getValueList();//获取查询列表所填写的value grids.getStore().removeAll(); grids.getStore().load({params:{start:0,limit:page_size,table:selectedTableName,types:selectedTypeList,valueList:valueList,idList:idList}}); } function reSetForm(){//重置查询信息 var form=document.getElementById("queryform"); for(var i=0;i<form.length;i++){ if (form[i].type == "text"){ form[i].value=""; } } } //获取表单上填写的自定义查询条件值数组 function getValueList(){ var arr=[]; var form=document.getElementById("queryform"); for(var i=0;i<form.length;i++){ if (form[i].type == "text"){ if(form[i].value!=""){ arr.push(form[i].value); }else{ arr.push("empty"); } } } return arr.join("|"); } //获取自定义查询条件ID列表数组 function getQueryList(){ idList = ""; var form=document.getElementById("queryform"); for(var i=0;i<form.length;i++){ if (form[i].type == "text"){ idList += form[i].id+"|"; } } idList = idList.substring(0, idList.length-1); } function setQueryData(data){ htmldata = "<form name=\"queryform\" id=\"queryform\" action=\""+link.formQuery+"\" method=\"post\">"+defultQueryHtml; for(var i=0;i<data.length;i++){ htmldata += "<div class=\"formdiv\"><div class=\"textdiv\">"+data[i].name+":</div><input name=\""+data[i].enname+"\" id=\""+data[i].enname+"\" text=\""+data[i].name+"\" class=\"valuediv\" type=\"text\"/></div>"; } htmldata += "</form>"; Ext.getCmp("toppanel").body.update(htmldata); } function getFatherNodeList(node){//查询页面点击树时获得查询需要的selectedTypeList及设置title信息 Ext.getCmp("leftpanel").setTitle("文件分类: 所有"); var selectedNodeName; selectedTableName = ""; if(node.attributes.level=="0"){ selectedTableName = node.attributes.tablename; selectedNodeName = node.attributes.text; selectedTypeList = "|"+node.attributes.id+"|"; }else if(node.attributes.level=="1"){ var fNode = node.parentNode; selectedTableName = fNode.attributes.tablename; selectedNodeName = fNode.text+">"+node.text; selectedTypeList = "|"+fNode.attributes.id+"|"+node.attributes.id+"|"; }else if(node.attributes.level=="2"){ var fNode = node.parentNode; selectedTableName = fNode.parentNode.attributes.tablename; selectedNodeName = fNode.parentNode.text+">"+fNode.text+">"+node.text; selectedTypeList = "|"+fNode.parentNode.attributes.id+"|"+fNode.attributes.id+"|"+node.attributes.id+"|"; } Ext.getCmp("leftpanel").setTitle("文件分类: "+selectedNodeName); } function getUpFatherNodeList(node){//上传页面点击树时获得查询需要的selectedTypeList及设置title信息 Ext.getCmp("addWin").setTitle("附件上传"); selectedUpTableName = ""; var selectedNodeName; if(node.attributes.level=="0"){ selectedUpTableName = node.attributes.tablename; selectedNodeName = node.attributes.text; selectedUpTypeList = "|"+node.attributes.id+"|"; }else if(node.attributes.level=="1"){ var fNode = node.parentNode; selectedUpTableName = fNode.attributes.tablename; selectedNodeName = fNode.text+">"+node.text; selectedUpTypeList = "|"+fNode.attributes.id+"|"+node.attributes.id+"|"; }else if(node.attributes.level=="2"){ var fNode = node.parentNode; selectedUpTableName = fNode.parentNode.attributes.tablename; selectedNodeName = fNode.parentNode.text+">"+fNode.text+">"+node.text; selectedUpTypeList = "|"+fNode.parentNode.attributes.id+"|"+fNode.attributes.id+"|"+node.attributes.id+"|"; } Ext.getCmp("addWin").setTitle("附件上传:"+selectedNodeName); } function tips(value, meta, rec, rowIdx, colIdx, ds){//列表提示 var title = "tip:"; meta.attr = " ext:qtitle = '"+title+"', ext:qtip = '"+value+"'"; return value; } var time = { id:'time', header: "上传时间", width: 120, sortable: false, dataIndex: 'time', renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ var time = value.substring(0,value.length-2); return time; } } var rowIndex; var czText ="<a href=\"javascript:;\" onclick=\"javascript:viewFile()\">查看附件</a> <a href=\"javascript:;\" onclick=\"javascript:delFile()\">删除附件</a>"; var cz = { id:'cz', header: "操作", width: 90, sortable: false, dataIndex: 'cz', renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ var returnStr = czText return returnStr } } var treeload = new Ext.tree.TreeLoader({ dataUrl : link.getTreeData }) var mytree=new Ext.tree.TreePanel({ animate:true, title:"当前用户:"+user_name, rootVisible:true, autoScroll:true, lines:true, border:false, loader:treeload, root:new Ext.tree.AsyncTreeNode({ id:"root", text:"附件分类", draggable:false, expanded:true }), listeners:{"click":function(node,e){ if(node.attributes.text=="附件分类"){ selectedTableName = ""; selectedTypeList = ""; getDefultData(); Ext.getCmp("leftpanel").setTitle("文件分类: 所有"); return; } getFatherNodeList(node); if(node.attributes.level=="2"){ getQueryForm(node.attributes.id); }else{ getDefultData(); } } } }); function init(){//初始化view及获得附件表中的所有字段 并添加到fields Ext.Ajax.request({ url: link.getAllDataRead, async: false, success : function(data) { var mynamefield = {}; var d = eval(data.responseText); for(var i=0;i<d.length;i++){ mynamefield = {name:d[i].name.toLowerCase()} fields.push(mynamefield); } setFields(fields) }, failure : function(request) { Ext.MessageBox.show({ title : '操作提示', msg : "获取附件表字段失败,请检查!", buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.ERROR }); }, method : 'get' }); } function setFields(fields){ store = new Ext.data.Store({ autoLoad:false, proxy : new Ext.data.HttpProxy({ type: "ajax", method: 'POST', url : link.getFileList }), reader : new Ext.data.JsonReader({ fields:fields, root : "root", totalProperty : "total" }) }); store.on("beforeload",function(){ store.baseParams={}; }); var cm = [ new Ext.grid.RowNumberer(), {id:'id', header: "id", width: 0,hidden:true, sortable: false,hideable:false, dataIndex: 'id',renderer:tips}, {id:'filename', header: "附件名称", width: 260, sortable: false, hideable:false,dataIndex: 'filename',renderer:tips}, {id:'type', header: "附件类型", width: 50, sortable: false, dataIndex: 'type',renderer:tips}, {id:'guid', header: "guid", width: 0,hidden:true,hideable:false, sortable: false, dataIndex: 'guid',renderer:tips}, {id:'types', header: "types", width: 0,hidden:true, hideable:false,sortable: false, dataIndex: 'types',renderer:tips}, {id:'time', header: "上传时间", width: 120, sortable: false, dataIndex: 'time', renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ var time = value.substring(0,value.length-2) return time; } }, {id:'cz', header: "操作", width: 90, sortable: false, dataIndex: 'cz', renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ var returnStr = "<a href=\"javascript:;\" onclick=\"javascript:viewFile()\">查看附件</a> <a href=\"javascript:;\" onclick=\"javascript:delFile()\">删除附件</a>"; return returnStr; }} ] grids = new Ext.grid.GridPanel({ store:store, xtype: "grid", loadMask:true, anchor:"100% 100%", columnLines: true, autoWidth: true, viewConfig: { forceFit: true, border:false, stripeRows: true}, sortableColumns:false, bbar : new Ext.PagingToolbar({ pageSize : page_size, store : store, displayMsg:'当前显示 {0} - {1} 条记录 共 {2} 条记录', emptyMsg:"无记录", displayInfo : true }), columns:cm, listeners : { beforerender : function(cp) { } } }); var toppanel = new Ext.Panel({ id:"toppanel", border: false, collapsible: false, anchor:"100% 100%", html:"" }); var leftpanel = new Ext.Panel({ title:"选择分类", border: false, id:"leftpanel", collapsible: false, layout:"anchor", items:[{ border:false, anchor:"100% 25%", autoScroll:true, items:[toppanel], buttonAlign:"right", bbar:[{ text: '上传附件材料', iconCls: 'icon-upload', handler:function(){ uploadWin(); } },'->',{ text: '重置', iconCls: 'icon-upload-reset', handler:function(){ reSetForm(); } }, '->',{ text: '查询', iconCls: 'icon-query', handler:function(){ query(); } }] },{ border:false, id:"gp", layout:"anchor", anchor:"100% 75%", items:[grids] } ] }); new Ext.Viewport({ layout:"border", items: [ { region: "west", width:200,autoScroll:true, collapsible: false,items:[mytree],layout:"fit",border:true}, { region: "center", id:'center',width:400,collapsible: false,items:[leftpanel],layout:"fit",border:true } ] }); getDefultData();//表单打开时设置默认条件 grids.getStore().load({params:{start:0,limit:page_size}}); dt();//设置列表表头信息 } function uploadWin(){//上传文件窗口 var treeload1 = new Ext.tree.TreeLoader({ dataUrl : link.getTreeData }) var mytree1=new Ext.tree.TreePanel({ anchor:"100% 100%", animate:true, id:"mytree1", rootVisible:true, autoScroll:true, lines:true, border:false, loader:treeload1, root:new Ext.tree.AsyncTreeNode({ id:"root", text:"附件分类", draggable:false, expanded:true }), listeners:{"click":function(node,e){ autoloadcontrol.removeAll(); autoloadcontrol.doLayout(); autoloadcontrol.body.update("无"); if(node.attributes.text=="附件分类"){ Ext.getCmp("addWin").setTitle("附件上传"); return; }else if(node.attributes.level=="2"){ autoloadcontrol.body.update(""); setUploadForm(node.attributes.id); } getUpFatherNodeList(node); } } }); treeload1.on("load",function(node,response){ selectUptree(); }) ; autoloadcontrol = new Ext.form.FieldSet({ layout: "form", html:"无", title: "自定义条件" }) autoloadcontrol1 = new Ext.form.FieldSet({ layout: "form", html:"无", title: "全局条件" }) autoloadcontrol2 = new Ext.form.FieldSet({ title: "文件上传", items:[{xtype:"fileuploadfield", labelStyle:"text-align:right", id: "form-file", width:"300", emptyText:"请选择上传的文件", fieldLabel:"文件路径", name:"file", buttonText:"选择文件", buttonCfg:{ iconCls:'icon-selectfile' }}] }) var fp = new Ext.FormPanel({ id:"fp", fileUpload:true, autoScroll:true, anchor:"100% 100%", border:false, enctype:"multipart/form-data", bodyStyle:"padding: 10px 10px 0 10px;", labelWidth:"60", defaults: { anchor:"95%", msgTarget:"side" }, items:[//autoloadcontrol1,全局条件 autoloadcontrol, autoloadcontrol2 ] }) var addWin = new Ext.Window({ title : "附件上传", id : 'addWin', border : false, width : 730, height : 410, labelWidth:80, closeAction:'close', plain : true, modal : true, autoScroll:true, buttonAlign:'center', constrain : true, layout:"border", items: [{ region:"west", autoScroll:true, margins: "5 0 0 0", cmargins: "5 5 0 0", width: "200", minSize: "100", maxSize: "250", layout:"anchor", items:[mytree1] },{ collapsible: false, region:"center", margins: "5 0 0 0", autoScroll:true, items:[fp] }], buttons: [{ text: "上传", iconCls:"icon-uploadfile", handler: function(){ if(Ext.getCmp("form-file").getValue().trim()==""){ alert("请选择需要上传的文件"); return; } if (fp.getForm().isValid()){ var allow = checkUploadFile(Ext.getCmp("form-file").getValue()); if(!allow){ alert("无法上传此文件类型的文件"); return; } if(selectedUpTableName==""){ alert("请选择文件分类"); return; } setUpData();//获取上传时填写的内容 fp.getForm().submit({ url:link.uploadFile+"?maxSize="+maxSize+"&upIdList="+upIdList+"&upValueList="+upValueList+"&types="+selectedUpTypeList+"&table="+selectedUpTableName, waitTitle:"请稍候", waitMsg:"正在上传...", success:function(fp,o){ if(o.result.message=="success"){ Ext.Msg.alert("提示消息","上传成功"); }else if(o.result.message=="error001"){ Ext.Msg.alert("错误","数据库插入数据失败"); }else if(o.result.message=="error002"||o.result.message=="error003"){ Ext.Msg.alert("错误","文件上传失败"); }else if(o.result.message=="error004"){ Ext.Msg.alert("错误","文件大小超出"); } } }); } } },{ text: '重置', iconCls:'icon-upload-reset', handler:function(){ fp.getForm().reset(); } }] }); addWin.show(); //getIsAllCondition();//打开上传界面时获得全局条件 } init();//初始化表单 getDefultData(); });
package com.fm.action; import java.sql.*; import org.apache.struts2.ServletActionContext; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import com.fm.dao.FileManagerDao; import com.fm.entity.FileTypeEntity; import com.fm.tool.Tool; public class FileUploadAction extends ActionSupport { private File file; private String fileFileName; private String fileContentType; private Boolean success = true; GuidAction GuidAction = new GuidAction(); FileManagerDao dao = new FileManagerDao(); Tool tool = new Tool(); HttpServletRequest request=ServletActionContext.getRequest(); HttpServletResponse response=ServletActionContext.getResponse(); public void upload() throws IOException{ String table = request.getParameter("table"); String s_maxSize = request.getParameter("maxSize"); String types = request.getParameter("types"); String upIdList = request.getParameter("upIdList"); String upValueList = request.getParameter("upValueList"); String[] idArr = null; String[] valueArr = null; if(upIdList!=null){idArr = upIdList.split("\\|");} if(upValueList!=null){valueArr = upValueList.split("\\|");} String sql1 = ""; String sql2 = ""; if(idArr.length>0&&idArr!=null){ for(int i=0;i<idArr.length;i++){ sql1 += ","+idArr[i]; if(valueArr[i]!=null&&!valueArr[i].equals("empty")){ sql2 += ",'"+valueArr[i]+"'"; }else{ sql2 += ",''"; } } if(sql1.equals(",")){sql1="";} if(sql2.equals(",''")){sql2="";} } boolean state = true; String message = "success"; long maxSize = Long.parseLong(s_maxSize); if(!(maxSize<getFile().length())){//文件大小不超过设置最大值 String savePath = ServletActionContext.getServletContext().getRealPath("/AffixFiles/FileManager/"); String guid = GuidAction.GenerateGUID().replaceAll("-","");//获得GUID String fileName = getFileFileName().substring(0,getFileFileName().lastIndexOf("."));//获得文件名称 String fileType = getFileFileName().substring(getFileFileName().lastIndexOf(".")+1,getFileFileName().length()).toUpperCase();//获得文件后缀 String fullFileName = guid + "." + fileType;//获得文件名 GUID+后缀名 String filePath = savePath + "\\" + fullFileName;//获得文件完整路径 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String uploadDate = df.format(new Date());//获得当前日期 String sql = "insert into FILE_MANAGER( filename , type , guid , filepath , types , time) values ('"+fileName+"','"+fileType+"','"+guid+"','"+filePath+"','"+types+"',to_date('"+uploadDate+"','yyyy-mm-dd hh24:mi:ss'))"; System.out.println(sql); boolean sqlFlag = Tool.execSql(sql); if(!sqlFlag){//SQL语句执行错误时 state = false; message = "error001";//数据库插入数据失败 }else{ sql = "insert into "+table+"(guid"+sql1+") values ('"+guid+"'"+sql2+")"; boolean sqlFlag1 = Tool.execSql(sql); if(sqlFlag1){ boolean fileFlag = uploadFile(savePath,fullFileName); if(!fileFlag){//文件上传出错时 state = false; message = "error002";//文件上传失败 sql = "delete from FILE_MANAGER where guid = " + guid; sql2 = "delete from "+table+" where guid = " + guid; boolean delFlag = Tool.execSql(sql);//删除插入的数据 boolean delFlag2 = Tool.execSql(sql);//删除插入的数据 if(!delFlag||!delFlag2){message = "error003";}//删除失败 } }else{//插入自定义表失败 message = "error001";//数据库插入数据失败 } } }else{ message = "error004";//文件大小超过最大值 } String result = "{\"success\":\""+state+"\",\"message\":\""+message+"\"}"; tool.writerJson(response, result); } private boolean uploadFile(String path,String fullFileName){ File pathDir = new File(path); if (!pathDir.exists()){pathDir.mkdirs();}//默认保存文件夹路径不存在时建立文件夹 FileOutputStream fos = null; FileInputStream fis = null; try { // 建立文件输出流 fos = new FileOutputStream(path + "\\" + fullFileName); // 建立文件上传流 fis = new FileInputStream(getFile()); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } } catch (Exception e) { System.out.println("文件上传失败"); //e.printStackTrace(); return false; } finally { close(fos, fis); } return true; } /* private boolean uploadFile(String path,String fullFileName){ File pathDir = new File(path); if (!pathDir.exists()){pathDir.mkdirs();}//默认保存文件夹路径不存在时建立文件夹 FileOutputStream fos = null; FileInputStream fis = null; try { // 建立文件输出流 fos = new FileOutputStream(path + "\\" + fullFileName); // 建立文件上传流 fis = new FileInputStream(getFile()); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } } catch (Exception e) { System.out.println("文件上传失败"); //e.printStackTrace(); return false; } finally { close(fos, fis); } return true; }*/ private void close(FileOutputStream fos, FileInputStream fis) { if (fis != null) { try { fis.close(); } catch (IOException e) { System.out.println("FileInputStream关闭失败"); e.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e) { System.out.println("FileOutputStream关闭失败"); e.printStackTrace(); } } } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } public String getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } public Boolean getSuccess() { return success; } public void setSuccess(Boolean success) { this.success = success; } }
标签:
原文地址:http://blog.csdn.net/wyqhl/article/details/51314027