swfupload 上传失败的问题

tyffdj 2009-11-27 07:06:12
写了一个多文件上传的代码。但是,遇到了一点问题。不知道怎么解决了。
请问下高手帮忙解决下。谢谢
uploadSoftTerm.jsp上传页面。
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort() + path + "/";

StringBuffer uploadUrl = new StringBuffer("http://");
uploadUrl.append(request.getHeader("Host"));
uploadUrl.append(request.getContextPath());
uploadUrl.append("/termsoft.do?command=uploadTermSoft");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href=" <%=basePath%>">
<title>SWFUpload Demos </title>
<link href="/page/termSoftware/css/default.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="/page/termSoftware/css/button.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="/page/termSoftware/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="/page/termSoftware/ext/adapter/ext/ext-base.js"> </script>
<script type="text/javascript" src="/page/termSoftware/ext/ext-all.js"> </script>
<script type="text/javascript" src="/page/termSoftware/ext/ext-lang-zh_CN.js"> </script>

<script type="text/javascript" src="/page/termSoftware/js/swfupload/swfupload.js"> </script>
<script type="text/javascript" src="/page/termSoftware/js/swfupload/swfupload.queue.js"> </script>
<script type="text/javascript" src="/page/termSoftware/js/swfupload/handlers.js"> </script>

<script type="text/javascript" src="/page/termSoftware/js/swfupload/swfupload.js"> </script>
<script type="text/javascript" src="/page/termSoftware/js/swfupload/handlers.js"> </script>
<script type="text/javascript">
var swfu;
window.onload = function () {
swfu = new SWFUpload({
upload_url: " <%=uploadUrl.toString()%>",
post_params: {"name" : "huliang"},

// File Upload Settings
file_size_limit : "10 MB", // 1000MB
file_types : "*.*",
file_types_description : "所有文件",
file_upload_limit : "0",

file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,//选择好文件后提交
file_queued_handler : fileQueued,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,

// Button Settings
button_image_url : "/page/termSoftware/images/SmallSpyGlassWithTransperancy_17x18.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 180,
button_height: 18,
button_text : ' <span class="button">选择文件 <span class="buttonSmall">(10 MB Max) </span> </span>',
button_text_style : '.button { font-family: Helvetica, Arial, sans-serif; font-size: 12pt; } .buttonSmall { font-size: 10pt; }',
button_text_top_padding: 0,
button_text_left_padding: 18,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
button_cursor: SWFUpload.CURSOR.HAND,

// Flash Settings
flash_url : "/page/termSoftware/js/swfupload/swfupload.swf",

custom_settings : {
upload_target : "divFileProgressContainer"
},
// Debug Settings
debug: false //是否显示调试窗口
});
};
function startUploadFile(){
swfu.startUpload();
}
var win = new Ext.Window({
title : 'SwfUpload',
closeAction : 'hide',
width : 750,
height : 360,
resizable : false,
modal : true,
html : ' <iframe src="index.jsp" width="100%" height="100%"> </iframe>'
});
function showExtShow(){
win.show();
}
function closeExtShow(){
win.close();
}
</script>
</head>
<body style="background-color: #C0D1E3; padding: 2px;">
<div id="content">
<form>
<div
style="display: inline; border: solid 1px #7FAAFF; background-color: #C5D9FF; padding: 2px;">
<span id="spanButtonPlaceholder"> </span>
<input id="btnUpload" type="button" value="上 传"
onclick="startUploadFile();" class="btn3_mouseout" onMouseUp="this.className='btn3_mouseup'"
onmousedown="this.className='btn3_mousedown'"
onMouseOver="this.className='btn3_mouseover'"
onmouseout="this.className='btn3_mouseout'"/>
<input id="btnCancel" type="button" value="取消所有上传"
onclick="cancelUpload();" disabled="disabled" class="btn3_mouseout" onMouseUp="this.className='btn3_mouseup'"
onmousedown="this.className='btn3_mousedown'"
onMouseOver="this.className='btn3_mouseover'"
onmouseout="this.className='btn3_mouseout'"/>

</div>
</form>
<div id="divFileProgressContainer"> </div>
<div id="thumbnails">
<table id="infoTable" border="0" width="530" style="display: inline; border: solid 1px #7FAAFF; background-color: #C5D9FF; padding: 2px;margin-top:8px;">
</table>
</div>
</div>

</body>
</html>

下面的是java 代码
private static final long serialVersionUID = -7825355637448948879L;
public ActionForward uploadTermSoft(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws NwException {
String str = "";
System.out.println();
String maxVer = this.maxSoft_ver();//获得最大的终端软件版本号
SystemProcessor d = new SystemProcessor();
String org_id = request.getParameter("org_id");
System.out.println("org_id:"+org_id);
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存缓冲区,超过后写入临时文件
factory.setSizeThreshold(10240000);

// 设置文件存储位置 文件路径:soft+org_id+maxVer;
String base = request.getRealPath("/soft/"+org_id+"/"+maxVer+"");

File file = new File(base);
if(!file.exists())
file.mkdirs();
factory.setRepository(file);
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置单个文件的最大上传值

// 设置整个request的最大值
upload.setSizeMax(10002400000l);
upload.setHeaderEncoding("UTF-8");
try {
List <TermSoftForm> items = upload.parseRequest(request);
System.out.println("items.size():"+items.size());
FileItem item = null;
String fileName = null;
for (int i = 0 ;i < items.size(); i++){
item = (FileItem) items.get(i);
System.out.println("item.getName():"+item.getName());
fileName = base + File.separator + item.getName();
// 保存文件
if (!item.isFormField() && item.getName().length() > 0) {
item.write(new File(fileName));
}
}
}catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward(str);
}
有谁能看出其中bug 吗
...全文
707 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
什么是SWFUpload?   SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 [编辑本段]SWFUpload的主要特点   * 可以同时上传多个文件;   * 类似AJAX的无刷新上传;   * 可以显示上传进度;   * 良好的浏览器兼容性;   * 兼容其他JavaScript库 (例如:jQuery, Prototype等);   * 支持Flash 8和Flash 9;   SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。   在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发中,大部分的错误都是由于错误的设置和低劣的Event Handlers处理程序所造成的。 [编辑本段]文档中文翻译   http://www.v-sky.com/doc/swfupload/v2.1.0/Documentation.html [编辑本段]效果演示   * Classic Form Demo http://demo.swfupload.org/formsdemo ;   * Features Demo http://demo.swfupload.org/featuresdemo ;   * Application Demo http://demo.swfupload.org/applicationdemo ;   * v1.0.2 Plugin Demo http://demo.swfupload.org/v102demo ; [编辑本段]选择合适的Flash控件   在发行包(SWFUpload v2)中含有2个版本的Flash控件(swfupload_f8.swf 与wfupload_f9.swf),其中第一个版本拥有最佳的兼容性,但是为此损失了部分功能;而第二个版本提供了一些附加的功能但是损失了兼容性。 [编辑本段]SWFUpload的初始化与配置   首先,在页面中引用SWFUpload.js ,如      然后,初始化SWFUpload ,如   var swfu;   window.onload = function () {   swfu = new SWFUpload({   upload_url : "http://www.swfupload.org/upload.php",   flash_url : "http://www.swfupload.org/swfupload_f9.swf", file_size_limit : "20480"   });   };   以下是一个标准的SWFUpload初始化设置所需的参数,你可以根据需要自己进行删减:   {   upload_url : "http://www.swfupload.org/upload.php", 处理上传请求的服务器端脚本URL   file_post_name : "Filedata", 是POST过去的$_FILES的数组名   post_params : {   "post_param_name_1" : "post_param_value_1",   "post_param_name_2" : "post_param_value_2",   "post_param_name_n" : "post_param_value_n"   },   file_types : "*.jpg;*.gif", 允许上传的文件类型   file_types_description: "Web Image Files", 文件类型描述   file_size_limit : "1024", 上传文件体积上限,单位MB   file_upload_limit : 10, 限定用户一次性最多上传多少个文件,在上传过程中,该数字会累加,如果设置为“0”,则表示没有限制   file_queue_limit : 2, 上传队列数量限制,该项通常不需设置,会根据file_upload_limit自动赋值   fl
本期除了API文档外,再附送《SWFUpload V2_2_0 说明文档.htm》 花生米AJAX-UI系列之:基于JQUERY的文件上传控件0.1版 特点: 可设定为是否单个上传,或者是批量上传; 可在上传过程中取消上传(单个或者批量取消); 在批量选择文件后,可以手工选择上传其中部分文件; 可在上传文件时顺带上传REQUEST传参,如SESSION_ID; 选择批量文件,在上传前,用户还可删除其中几个不想上传的文件; 本控件是对swfUpload这个FLASH插件的二次包装,控件类对象中的一个内部元素即为一个SWFUpload对象,可对其中进行相应的操作(详见附送的SWFUpload V2_2_0 说明文档.htm) 本控件内置一个保存了文件列表信息的数组$fileList,其单元为JSON对象,保存了每个文件的ID,名称,类型,大小等信息; 可自定义按钮显示文字,文件上传的服务器端地址,以及SWF控件相对于当前网页的相对路径 本个控件包是建立在JSP基础上为大家展示上传效的,但实际该控件有用的部分仅在客户端前台;后台代码可以全部推翻,重新用PHP,.NET等其它动态语言编写 使用了本控件后,在后台编写代码时,不必编写实时监控文件上传进度的复杂代码,只用编写简单的处理保存上传文件的代码即可,因为FLASH插件会自动帮助算出上传进度,并实时定时给控件提供进度显示数据,这样就减轻了后台开发人员的工作量; 基于上一点,本控件前台也不会以长轮询方式访问服务器端,以获取文件上传进度情况,而是自己定时计算以上传的字节总数。因此当上传一个文件时,FLASH插件只会发一次传输请求,这样就改善了效率。 由于用FLASH传值时会给服务器造出一个新的SESSION,导致在服务端过滤器作用下可能会上传失败,因此用户可以在上专文件时,利用this.$swfUpload的addPostParam或者setPostParams方法,将原来的SESSION_id作为REQUEST参数传回服务端,服务端过滤器只要根据此SESSION_id判断相应用户是否“登录”即可.\

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧