用swfupload上传错误500附件时有的文件类型是支持的为什么还会报错,换个文件名又可以了

7738人阅读
【Struts2 基础】(6)
【Java EE 基础】(6)
需求和解决方案
传统的html文件域控件只支持单文件上传,用过网盘的同志都知道,有些时候是必须要使用多文件上传的。比如网上的相册上传照片。
这种需求可以由swfupload实现,115网盘就是使用的这种实现。
最初是由开发的一个客户端的上传工具.&它结合了FLASH和JavaScript的功能,以提供一种超越了传统的浏览器中&input&type=&file&&/&标签提供的文件上传功能。
上传页面:
&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&link href=&&%=basePath%&css/default.css& rel=&stylesheet& type=&text/css& /&
&script type=&text/javascript& src=&&%=basePath%&js/swfupload.js&&&/script&
&script type=&text/javascript& src=&&%=basePath%&js/swfupload.queue.js&&&/script&
&script type=&text/javascript& src=&&%=basePath%&js/fileprogress.js&&&/script&
&script type=&text/javascript& src=&&%=basePath%&js/handlers.js&&&/script&
&script type=&text/javascript&&
var upload1, upload2;
window.onload = function() {
//在window的载入时初始化swfupload对象
upload1 = new SWFUpload({
//提交路径
upload_url: &upload.action&,
//向后台传递额外的参数
//提交到服务器的参数信息,这样就添加了一个param参数,值是uploadParams在服务器端用request.getParameter(“param”)就可以拿到值
post_params: {&name& : &kaobian&},
//上传文件的名称
file_post_name: &file&,
file_size_limit : &102400&, // 100MB
file_types : &*.*&,
file_types_description : &All Files&,
file_upload_limit : &10&,
file_queue_limit : &0&,
// 事件处理
file_dialog_start_handler : fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
// 按钮的处理
button_image_url : &images/XPButtonUploadText_61x22.png&,
button_placeholder_id : &spanButtonPlaceholder1&,
button_width: 61,
button_height: 22,
// Flash Settings
flash_url : &js/swfupload.swf&,
custom_settings : {
progressTarget : &fsUploadProgress1&,
cancelButtonId : &btnCancel1&
// Debug Settings
debug: false
&div id=&content&&
&form action=&upload.action& method=&post& name=&thisform& enctype=&multipart/form-data&&
&tr valign=&top&&
&div class=&fieldset flash& id=&fsUploadProgress1&&
&span class=&legend&&文件上传&/span&
&div style=&padding-left: 5&&
&span id=&spanButtonPlaceholder1&&&/span&
&input id=&btnCancel1& type=&button& value=&Cancel Uploads& onclick=&cancelQueue(upload1);& disabled=&disabled& style=&margin-left: 2 height: 22 font-size: 8& /&
这个文件的重点是:
1.引用文件,这里面引用的js和swf一个都不能少。
2.swfupload对象的初始化,这些js语句配置了一个swfupload对象,理解配置是一个重点。
使用swfupload实现多文件上传的思路是在客户端通过选众多个文件,生成一个文件上传队列,这个队列中的每一个文件就相当于一个传统的文件域。所以在服务器端是没有任何变化的。
完整项目下载
Swfupload&+&struts2多文件上传案例下载
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:455121次
积分:4738
积分:4738
排名:第5322名
原创:86篇
转载:29篇
评论:55条解决SWFUpload上传文件组件使用时报告2049错误
使用SWFUpload上传文件组件开发时可能你会遇到选择文件后点击上传,然后系统报告2049错误的问题。因为其显示的错误很含糊,不清楚是什么地方报出的,但估计应该是在handlers.js文件中的uploadError函数中,因为这个函数会检查errorCode的值,当该函数检查执行default规则时就会弹出一个对话框。为了明确断定问题出在此处,我将部分alert函数部分改写成:
alert(“Override==&”+message);
这样在此执行时,就会发现其报出的错误内容前面会加是“Override==&#2049”,于是我确定问题就是这。在此修改此alert函数,使其输出errorCode的值,会发现errorCode值为-230,检查UPLOAD_ERROR的定义发现,-230表示的是SECURITY_ERROR,即上传违反安全约束。
从官网上查看,好像也有些人遇到这个问题,但他们提供的解决方案是在swfupload.swf文件所在目录下和服务器的根目录下放置一个crossdomain.xml文件,其内容如下:
我的实践告诉我仍然解决不了问题。我的解决办法如下:
在对SWFUpload进行实例化时要传参数,如果采用完整路径,其中必须保证upload_url和flash_url所使用的服务器描述一致。例如:
(假设服务名为TestServer,其IP为192.168.1.100)
upload_url:"http://TestServer/Test/SFileUpload",
flash_url:"http://192.168.1.100/Test/flash/swfupload.swf",
如果如上代码,则会报告2049错误。你必须将其改成:
upload_url:"http://192.168.1.100/Test/SFileUpload",
flash_url:"http://192.168.1.100/Test/flash/swfupload.swf",
upload_url:"http://TestServer/Test/SFileUpload",
flash_url:"http://TestServer/Test/flash/swfupload.swf",
要保证两个url对服务器的描述是一致的。另外最后在后面还要加上:
prevent_swf_caching : false,
preserve_relative_urls : false,
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 swfupload 返回文件名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信