用struts2和jquery的uploadify 批量上传多文件时,会出现上传的部分文件丢失,不能

发布于 2021-11-06 21:49:30 字数 5802 浏览 680 评论 6

这是我的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

成熟的代价 2021-11-11 18:01:53

能说清楚点吗?虽然是同时提交,但是有多个文件的话,他是多次进入了action中的啊,问什么每次进去都读取的是同一个文件名啊?

把昨日还给我 2021-11-11 18:01:21

我晕....同时提交....你类写错了当然错了....

緦唸λ蓇 2021-11-11 18:01:12

哥们,我也遇见你一样的问题了,有解决方案吗

皇甫轩 2021-11-11 17:52:58

这是我的控制台:

2021-11-11 13:19:01

这是我的jsp页面

羁拥 2021-11-11 12:22:01

大家帮帮忙啊!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文