加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

利用swfupload实现java文件批量上传

发布时间:2020-12-15 17:54:07 所属栏目:百科 来源:网络整理
导读:?? 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传指的是用户一次性可以选择多个文件,然后上传是将所有选取的文件上传到服务器。java中真正可以实现批量上传的技术大致有两种:一种是通过flash;一种是通过applet;不过html5

?? 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传指的是用户一次性可以选择多个文件,然后上传是将所有选取的文件上传到服务器。java中真正可以实现批量上传的技术大致有两种:一种是通过flash;一种是通过applet;不过html5也可以支持批量拖选。两种方式有各自的优缺点,其中flash对于浏览器兼容性较好,基本可以满足市面上大众浏览器,缺点就是对于上传文件大小有限制,如果用户只需要上传一些图片或者文档文件的话,这种选择还是比较理想的;applet方式可以上传大文件,但是需要浏览器支持jdk并安装相关插件。

?? ? ?今天这个项目采用的是flash方式。整体设计思路:采用ext+swfupload进行上传界面显示,后台采用strust2来处理上传文件。



最终项目运行效果图如下:



前台jsp文件源码index.jsp:

[html]? view plain copy print ?
  1. <%@?page?contentType="text/html;charset=gb2312"?language="java"%>??
  2. <html>??
  3. ????head ????????title>swf?上传</ ????????link?rel="stylesheet"?type="text/css"??
  4. ????????????href="js/css/ext-all.css"?/>??
  5. ??????????
  6. ???? ??
  7. ??????
  8. ??????
  9. 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">???
  10. script?type="text/javascript"?src="js/prototype/prototype.js"script?type="text/javascript"?src="js/bramus/jsProgressBarHandler.js"script??type="text/javascript" //?允许上传文件的全部大小??
  11. var?limtallsize=50000000;??
  12. ??
  13. ??function?UploadGrid()??
  14. ??{????
  15. ?????????var?mine=this;???????
  16. ?????????var?states=[{v:-1,t:'等待'},{v:0,t:'就绪'},{v:1,t:'上传中'},{v:2,t:'停止'},{v:3,t:'成功'},{v:4,t:'失败'}];????
  17. ?????????function??statesRender(v)??
  18. ?????????{??
  19. ????????????for(var?i=0;istates.length?;i++)??
  20. ????????????{??
  21. ???????????????if(states[i].v==v)??
  22. ???????????????{??
  23. ?????????????????return?states[i].t;??
  24. ???????????????}??
  25. ????????????}??
  26. ?????????}??
  27. ?????????function?rateRender(value,?metaData,?record,?rowIndex,?cellIndex,?store)??
  28. ????????????v=value?value:0;??
  29. ????????????//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>";??
  30. ????????????//setProgress(v);??
  31. ????????????return?"span?id="element6_"+record.data.id+""?rate=""+v+""span ?????????}??
  32. ?????????????????
  33. ?????????var?rn=new?Ext.grid.RowNumberer();??
  34. ?????????var?sm?=?new?Ext.grid.CheckboxSelectionModel({singleSelect:false});???????????????????????
  35. ?????????var?cm?=?new?Ext.grid.ColumnModel([??????
  36. ????????????rn,??
  37. ????????????sm,???
  38. ????????????{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',??
  39. ????????????{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}??
  40. ???????????]);??????
  41. ????????????this.ds?=?new?Ext.data.Store({??????????
  42. ????????????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(??
  43. ????????????{totalProperty:'records',root:'root'},?????????
  44. ????????????[??
  45. ????????????{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'}??
  46. ????????????])???
  47. ??????????????
  48. ????????});????
  49. ????????var?RC=Ext.data.Record.create([??
  50. ?????????????????{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'}??
  51. ?????????????????]);?????????
  52. ??????????
  53. ????????this.grid?=?new?Ext.grid.GridPanel({????????
  54. ????????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:'-'},'-'],????
  55. ????????listeners:{??
  56. ??????????render:function()??
  57. ??????????{??
  58. ????????????//?ytb-sep??
  59. ????????????var?cmp=Ext.getCmp("spanSWFUploadButton");??
  60. ????????????var?pcont=cmp.getEl().parent();??????????
  61. ????????????pcont.update("span?id='spanSWFUploadButton'?class='blank'>");??
  62. ????????????var?swfu?=?new?SWFUpload({??
  63. ????????????????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?:?{??
  64. ????????????????????"god"?:?"god","uid"?:?"u"??
  65. ????????????????},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,??????????????????
  66. ????????????????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"> ??????????????????
  67. ????????????????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???
  68. ????????????????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,???
  69. ????????????????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???????????????
  70. ????????????});??
  71. ????????????swfu.grid=mine.grid;??
  72. ????????????swfu.ds=mine.ds;??
  73. ????????????swfu.RC=RC;???????????
  74. ????????}??
  75. ??????}???
  76. ??????});???
  77. ????????
  78. ??}??
  79. ??Ext.onReady(function(){????
  80. ???????Ext.QuickTips.init();??
  81. ???????Ext.form.Field.prototype.msgTarget?=?'side';??
  82. ???????Ext.BLANK_IMAGE_URL?='../../images/s.gif';??
  83. ???????var?grid=new?UploadGrid();??
  84. ???????var??win?=?new?Ext.Window({??
  85. ????????????????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',//关闭窗口时渐渐缩小??
  86. ????????????????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"> ???
  87. ????????????????buttons:?[{??
  88. ????????????????????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??
  89. ????????????????},{??
  90. ????????????????????text:?'Close',248); line-height:20px; font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????????????handler:?function(){??
  91. ????????????????????????win.hide();??
  92. ????????????????????}??
  93. ????????????????}]??
  94. ?????????win.show(this);?????
  95. ??})???????????????
  96. div?id="panel"div>??

后台UploadAction.java:

[java]? ?
    package?upload.action;??
  1. import?java.io.File;??
  2. import?java.text.DateFormat;??
  3. import?java.text.SimpleDateFormat;??
  4. import?java.util.Date;??
  5. import?org.apache.struts2.ServletActionContext;??
  6. public?class?UploadAction??
  7. {??
  8. ????private?File?Filedata;??
  9. private?String?FiledataFileName;??
  10. private?String?FiledataContentType;??
  11. ????//?文件夹目录??
  12. ????private?static?final?String?basePath?=?"fileuploadgroupResource";??
  13. public?String?execute()??
  14. ????{??
  15. ????????String?s?=?(String)ServletActionContext.getRequest().getParameter("god");??
  16. ????????String?s2?=?(String)ServletActionContext.getRequest().getParameter("uid");??
  17. ????????if?(Filedata?!=?null?&&?Filedata.length()?>?0)??
  18. ????????{??
  19. ????????????//?群组名字作为最后的文件夹??
  20. ????????????String?groupFileName?=?"haoba";??
  21. ????????????String?uploadPath?=?ServletActionContext.getServletContext()??
  22. ????????????????????.getRealPath(basePath+""+groupFileName);??
  23. ????????????File?path?=?new?File(uploadPath);??
  24. ????????????if?(!path.exists())??
  25. ????????????{??
  26. ????????????????path.mkdirs();??
  27. ????????????}else{??
  28. ????????????????//文件已存在??
  29. ????????????????//FiledataFileName???
  30. ????????????}??
  31. ????????????String?newPath?=?uploadPath?+""+FiledataFileName;??
  32. ????????????Filedata.renameTo(new?File(newPath));??
  33. ?????????????
  34. //?保存到数据库中的路径??
  35. ????????????String?savePath?=?basePath+""+groupFileName+""+FiledataFileName;??
  36. ????????return?null;??
  37. ????}??
  38. //?上传文件??
  39. private?String?pathSplit(String?timeStr,?String?o,?String?n)??
  40. ????????StringBuffer?sb?=?new?StringBuffer();??
  41. for?(String?a?:?timeStr.split(o))??
  42. ????????????sb.append(a);??
  43. ????????????sb.append(n);??
  44. ????????}??
  45. ????????sb.deleteCharAt(sb.length()?-?1);??
  46. return?sb.toString();??
  47. ????}??
  48. static?String?format(Date?date,?String?parttern)??
  49. ????????DateFormat?df?=?new?SimpleDateFormat(parttern);??
  50. return?df.format(date);??
  51. ????}??????
  52. public?File?getFiledata()??
  53. return?Filedata;??
  54. void?setFiledata(File?filedata)??
  55. ????{??
  56. ????????Filedata?=?filedata;??
  57. public?String?getFiledataFileName()??
  58. return?FiledataFileName;??
  59. void?setFiledataFileName(String?filedataFileName)??
  60. ????????FiledataFileName?=?filedataFileName;??
  61. public?String?getFiledataContentType()??
  62. return?FiledataContentType;??
  63. void?setFiledataContentType(String?filedataContentType)??
  64. ????????FiledataContentType?=?filedataContentType;??
  65. void?main(String[]?args)?{??
  66. ????????System.out.println(0.444<1);??
  67. } ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读