用struts2和jquery的uploadify 批量上传多文件时,会出现上传的部分文件丢失,不能
这是我的jsp页面:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ include file="/common/header.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>文件上传</title> <link rel="stylesheet" type="text/css" href="${ctx}/widgets/jw/red/css/jw_table.css" /> <script language="javascript" type="text/javascript" src="${ctx}/widgets/uploadify/jquery-1.4.2.min.js"></script> <script language="javascript" type="text/javascript" src="${ctx}/widgets/uploadify/jquery.uploadify.v2.1.4.js"></script> <script language="javascript" type="text/javascript" src="${ctx}/widgets/uploadify/swfobject.js"></script> <script language="javascript" type="text/javascript" src="${ctx}/widgets/uploadify/jquery.uploadify.v2.1.4.min.js"></script> <script type="text/javascript"> $(function() { $('#custom_file_upload').uploadify({ 'uploader' : '${ctx}/widgets/uploadify/uploadify.swf', 'script' : '${ctx}/presentManagement_doFileUpload.do?randomIndex=<%=Math.random()%>', 'cancelImg' : '${ctx}/widgets/uploadify/cancel.png', 'folder' : '${ctx}/widgets/uploads', 'fileDataName' : 'Filedata', 'displayData' : 'speed', //有speed和percentage两种,一个显示速度,一个显示完成百分比 'multi' : true, 'auto' : true, 'fileExt' : '', 'fileDesc' : '', 'queueID' : 'custom-queue', //'queueSizeLimit' : 10, 'simUploadLimit' : 10, 'sizeLimit': 1073741824, //设置单个文件大小限制,单位为byte 'removeCompleted': false, 'onSelectOnce' : function(event,data) { $('#status-message').text(data.filesSelected + ' files have been added to the queue.'); }, 'onAllComplete' : function(event,data) { $('#status-message').text(data.filesUploaded + ' files uploaded, ' + data.errors + ' errors.'); }, 'onError' : function(event, queueID, fileObj) { alert("文件:" + fileObj.name + "上传失败"); } }); }); </script> <style type="text/css"> #custom-demo .uploadifyQueueItem { background-color: #FFFFFF; border: none; border-bottom: 1px solid #E5E5E5; font: 11px Verdana, Geneva, sans-serif; height: 50px; margin-top: 0; padding: 10px; width: 350px; } #custom-demo .uploadifyError { background-color: #FDE5DD !important; border: none !important; border-bottom: 1px solid #FBCBBC !important; } #custom-demo .uploadifyQueueItem .cancel { float: right; } #custom-demo .uploadifyQueue .completed { color: #C5C5C5; } #custom-demo .uploadifyProgress { background-color: #E5E5E5; margin-top: 10px; width: 100%; } #custom-demo .uploadifyProgressBar { background-color: #0099FF; height: 3px; width: 1px; } #custom-demo #custom-queue { border: 1px solid #E5E5E5; height: 213px; margin-bottom: 10px; width: 370px; } </style> </head> <body> <form action="presentManagement_doFileUpload.do" method="post" name="form1" id="form1" enctype="multipart/form-data"> <div class="w-here"> <div class="w-here-box"><span> 文件管理→ 文件上传</span></div> </div> <table> <tr> <td align="center" height="40"><span style="font-size: 16px; font-weight: 600;">文件上传</span></td> </tr> </table> <div class="menu" > <table> <tr> <td height="36" class="td3" align="left" id="status-message">Select some files to upload:</td> <td class="td3" align="left" width="80"> <input id="custom_file_upload" type="file" name="Filedata" /> </td> </tr> <tr> <td> <div id="custom-queue"></div> </td> </tr> </table> </div> </form> </body> </html>
这是我的struts2代码中方法:
public String doFileUpload(){ System.out.println(getRequest().getParameter("randomIndex")); System.out.println("文件类型:" + FiledataContentType); System.out.println("文件名:" + FiledataFileName); System.out.println(">>>>>PATH:" + Filedata.getAbsolutePath()); FileInputStream filein = null; FileOutputStream fileout = null; try { filein = new FileInputStream(Filedata); fileout = new FileOutputStream(new File("G://wp_learning//" + FiledataFileName)); byte[] buffer = new byte[1024]; while (filein.read(buffer) != -1){ fileout.write(buffer); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (null != filein) { try { filein.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != fileout) { try { fileout.close(); } catch (IOException e) { e.printStackTrace(); } } } return "dofileupload"; }
例如我上传3个文件:
可是控制台上却是:
全部是同名的文件!!!!虽然flash调用执行了3次,可是全是重复的文件!!有时可以上传2个不一样的,还有1个是一样的!
很奇怪!急死了!忘大家帮忙解决!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
能说清楚点吗?虽然是同时提交,但是有多个文件的话,他是多次进入了action中的啊,问什么每次进去都读取的是同一个文件名啊?
我晕....同时提交....你类写错了当然错了....
哥们,我也遇见你一样的问题了,有解决方案吗
这是我的控制台:
这是我的jsp页面
大家帮帮忙啊!