?? 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传指的是用户一次性可以选择多个文件,然后上传是将所有选取的文件上传到服务器。java中真正可以实现批量上传的技术大致有两种:一种是通过flash;一种是通过applet;不过html5也可以支持批量拖选。两种方式有各自的优缺点,其中flash对于浏览器兼容性较好,基本可以满足市面上大众浏览器,缺点就是对于上传文件大小有限制,如果用户只需要上传一些图片或者文档文件的话,这种选择还是比较理想的;applet方式可以上传大文件,但是需要浏览器支持jdk并安装相关插件。
?? ? ?今天这个项目采用的是flash方式。整体设计思路:采用ext+swfupload进行上传界面显示,后台采用strust2来处理上传文件。
最终项目运行效果图如下:
前台jsp文件源码index.jsp:
- <%@?page?contentType="text/html;charset=gb2312"?language="java"%>??
- <html>??
- ????head ????????title>swf?上传</ ????????link?rel="stylesheet"?type="text/css"??
- ????????????href="js/css/ext-all.css"?/>??
- ??????????
- ???? ??
- ??????
- ??????
- body ?script??type="text/javascript"?src="js/ext-base.js">script ?script??type="text/javascript"?src="js/ext-all.js"script?src="swf/swfupload.js"?type="text/javascript"script?src="swf/swfupload.speed.js"?type="text/javascript"script?src="swf/mode.js"?type="text/javascript"script?src="swf/handlers.js"?type="text/javascript">???
- script?type="text/javascript"?src="js/prototype/prototype.js"script?type="text/javascript"?src="js/bramus/jsProgressBarHandler.js"script??type="text/javascript" //?允许上传文件的全部大小??
- var?limtallsize=50000000;??
- ??
- ??function?UploadGrid()??
- ??{????
- ?????????var?mine=this;???????
- ?????????var?states=[{v:-1,t:'等待'},{v:0,t:'就绪'},{v:1,t:'上传中'},{v:2,t:'停止'},{v:3,t:'成功'},{v:4,t:'失败'}];????
- ?????????function??statesRender(v)??
- ?????????{??
- ????????????for(var?i=0;istates.length?;i++)??
- ????????????{??
- ???????????????if(states[i].v==v)??
- ???????????????{??
- ?????????????????return?states[i].t;??
- ???????????????}??
- ????????????}??
- ?????????}??
- ?????????function?rateRender(value,?metaData,?record,?rowIndex,?cellIndex,?store)??
- ????????????v=value?value:0;??
- ????????????//return?"table?border='0'?cellpadding='0'?cellspacing='0'?width='100%'?height='100%'trtd?bgcolor='#0000FF'?height='100%'?align='center'?width='"+v+"%'font?color='white'>"+v+"%fonttdtable>";??
- ????????????//setProgress(v);??
- ????????????return?"span?id="element6_"+record.data.id+""?rate=""+v+""span ?????????}??
- ?????????????????
- ?????????var?rn=new?Ext.grid.RowNumberer();??
- ?????????var?sm?=?new?Ext.grid.CheckboxSelectionModel({singleSelect:false});???????????????????????
- ?????????var?cm?=?new?Ext.grid.ColumnModel([??????
- ????????????rn,??
- ????????????sm,???
- ????????????{header:'文件名称',dataIndex:'fileName',menuDisabled:true,width:?100},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{header:'大小'???,dataIndex:'fileSize',??
- ????????????{header:'进度'???,dataIndex:'rate',width:?180,renderer:rateRender},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{header:'速度'???,dataIndex:'speed',menuDisabled:true},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{header:'状态'???,dataIndex:'state',renderer:statesRender}??
- ???????????]);??????
- ????????????this.ds?=?new?Ext.data.Store({??????????
- ????????????proxy:?new?Ext.data.HttpProxy({url:'test!query.action',method:'post'}),108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????remoteSort:false,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????reader:?new?Ext.data.JsonReader(??
- ????????????{totalProperty:'records',root:'root'},?????????
- ????????????[??
- ????????????{name:?'id'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{name:?'fileName'},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{name:?'code'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{name:?'fileSize'},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{name:?'rate'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{name:?'speed'},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????{name:?'state'}??
- ????????????])???
- ??????????????
- ????????});????
- ????????var?RC=Ext.data.Record.create([??
- ?????????????????{name:?'id',?mapping:?'id'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ?????????????????{name:?'code',?mapping:?'code'},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ?????????????????{name:?'fileName',?mapping:?'fileName'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ?????????????????{name:?'fileSize',?mapping:?'fileSize'},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ?????????????????{name:?'rate',?mapping:?'rate'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ?????????????????{name:?'speed',?mapping:?'speed'}??
- ?????????????????]);?????????
- ??????????
- ????????this.grid?=?new?Ext.grid.GridPanel({????????
- ????????ds:?mine.ds,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????cm:?cm,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????sm:?sm,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????anchor:'100%',108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????loadMask:{msg:'数据加载中...'},248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????viewConfig:{forceFit:true},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????height:300,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????width?:600,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????tbar:[{id:'spanSWFUploadButton',text:'-'},'-'],????
- ????????listeners:{??
- ??????????render:function()??
- ??????????{??
- ????????????//?ytb-sep??
- ????????????var?cmp=Ext.getCmp("spanSWFUploadButton");??
- ????????????var?pcont=cmp.getEl().parent();??????????
- ????????????pcont.update("span?id='spanSWFUploadButton'?class='blank'>");??
- ????????????var?swfu?=?new?SWFUpload({??
- ????????????????upload_url?:?"upload.action",108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????post_params?:?{??
- ????????????????????"god"?:?"god","uid"?:?"u"??
- ????????????????},108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????flash_url?:?"swf/swfupload.swf",248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????button_placeholder_id?:?"spanSWFUploadButton",108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????button_image_url?:?"swf/bt.png",248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????button_text_right_padding?:?100,??????????????????
- ????????????????button_width:?61,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????button_height?:?22,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ??????????????????
- ????????????????button_action?:?SWFUpload.BUTTON_ACTION.SELECT_FILES,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????//?handler?here???
- ????????????????swfupload_loaded_handler?:?Handlers.swfUploadLoaded,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????file_queued_handler?:?Handlers.fileQueued,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????file_queue_error_handler?:?Handlers.fileQueueError,???
- ????????????????upload_progress_handler?:?Handlers.uploadProgress,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????upload_error_handler?:?Handlers.uploadError,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????upload_success_handler?:?Handlers.uploadSuccess???????????????
- ????????????});??
- ????????????swfu.grid=mine.grid;??
- ????????????swfu.ds=mine.ds;??
- ????????????swfu.RC=RC;???????????
- ????????}??
- ??????}???
- ??????});???
- ????????
- ??}??
- ??Ext.onReady(function(){????
- ???????Ext.QuickTips.init();??
- ???????Ext.form.Field.prototype.msgTarget?=?'side';??
- ???????Ext.BLANK_IMAGE_URL?='../../images/s.gif';??
- ???????var?grid=new?UploadGrid();??
- ???????var??win?=?new?Ext.Window({??
- ????????????????title:'上传表格测试',108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????el:'panel',248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????width:620,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????height:350,248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????closeAction:'hide',//关闭窗口时渐渐缩小??
- ????????????????plain:?true,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????items:[grid.grid],248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ???
- ????????????????buttons:?[{??
- ????????????????????text:'Submit',108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????????disabled:true??
- ????????????????},{??
- ????????????????????text:?'Close',248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????????handler:?function(){??
- ????????????????????????win.hide();??
- ????????????????????}??
- ????????????????}]??
- ?????????win.show(this);?????
- ??})???????????????
- div?id="panel"div>??
后台UploadAction.java:
package?upload.action;??
- import?java.io.File;??
- import?java.text.DateFormat;??
- import?java.text.SimpleDateFormat;??
- import?java.util.Date;??
- import?org.apache.struts2.ServletActionContext;??
- public?class?UploadAction??
- {??
- ????private?File?Filedata;??
- private?String?FiledataFileName;??
- private?String?FiledataContentType;??
- ??????
- ????private?static?final?String?basePath?=?"fileuploadgroupResource";??
- public?String?execute()??
- ????{??
- ????????String?s?=?(String)ServletActionContext.getRequest().getParameter("god");??
- ????????String?s2?=?(String)ServletActionContext.getRequest().getParameter("uid");??
- ????????if?(Filedata?!=?null?&&?Filedata.length()?>?0)??
- ????????{??
- ??????????????
- ????????????String?groupFileName?=?"haoba";??
- ????????????String?uploadPath?=?ServletActionContext.getServletContext()??
- ????????????????????.getRealPath(basePath+""+groupFileName);??
- ????????????File?path?=?new?File(uploadPath);??
- ????????????if?(!path.exists())??
- ????????????{??
- ????????????????path.mkdirs();??
- ????????????}else{??
- ??????????????????
- ??????????????????
- ????????????}??
- ????????????String?newPath?=?uploadPath?+""+FiledataFileName;??
- ????????????Filedata.renameTo(new?File(newPath));??
- ?????????????
- //?保存到数据库中的路径??
- ????????????String?savePath?=?basePath+""+groupFileName+""+FiledataFileName;??
- ????????return?null;??
- ????}??
- //?上传文件??
- private?String?pathSplit(String?timeStr,?String?o,?String?n)??
- ????????StringBuffer?sb?=?new?StringBuffer();??
- for?(String?a?:?timeStr.split(o))??
- ????????????sb.append(a);??
- ????????????sb.append(n);??
- ????????}??
- ????????sb.deleteCharAt(sb.length()?-?1);??
- return?sb.toString();??
- ????}??
- static?String?format(Date?date,?String?parttern)??
- ????????DateFormat?df?=?new?SimpleDateFormat(parttern);??
- return?df.format(date);??
- ????}??????
- public?File?getFiledata()??
- return?Filedata;??
- void?setFiledata(File?filedata)??
- ????{??
- ????????Filedata?=?filedata;??
- public?String?getFiledataFileName()??
- return?FiledataFileName;??
- void?setFiledataFileName(String?filedataFileName)??
- ????????FiledataFileName?=?filedataFileName;??
- public?String?getFiledataContentType()??
- return?FiledataContentType;??
- void?setFiledataContentType(String?filedataContentType)??
- ????????FiledataContentType?=?filedataContentType;??
- void?main(String[]?args)?{??
- ????????System.out.println(0.444<1);??
- } ?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|