在项目中要用到FLASH上传,选择了swfupload上传组件。因为一些定制化需求,感觉这个东西做得挺不错的。在IE下测试很正常,但项目组其他成员有的习惯了用FF,结果在FF上报 302 错误。
在网上搜索了很多文章,有中文的,也有英文的,都说是session的问题,火狐不保存session,需要传递sessionID,说的很不清楚。其实在前台配置的时候也使用了params:{"jsessionid","<%=session.getId()%>"},感觉上是传递了SESSIONID的,仍然不行。再查了一下TOMCAT默认的是不是都取的JSESSIONID,在COOKIE里面确实取到了这个值,但还是报同样的错误。
一篇博客中写到:
火狐下使用swfupload不保存session的确没错,但是如果你在这个上传过程中不需要使用session的话,是不会产生影响的。比如我发现我出现这个错误的原因就是因为我做了一个登陆的验证,对后台代码都进行了一个验证。因此去查找了session中存储的变量,结果因为火狐在使用 swfupload时,不保存session。导致产生302错误。
所以有这种情况的朋友,请仔细检查你的代码是否有过滤和拦截的情况,如果有这种情况,最好对swfupload的情况作一个特殊处理。
事实也正是如此。在项目中的ACESSFILTER中进行了测试,发现FF中使用swfupload上传时确实被重定向到了我们指定的未登陆跳转页面。于是,将JSESSIONID作为URL参数,如果有该参数且等于当前SESSIONID,则不过滤该请求。OK,搞定。
下面的例子
标红字的 就是看了 上面的 文章所加的 就加了 那一句 就 OK了
<%
StringBuffer uploadUrl = new StringBuffer("http://");
uploadUrl.append(request.getHeader("Host"));
uploadUrl.append(request.getContextPath());
uploadUrl.append("upload.action;
jsessionid="+session.getId());%>
var swfu;
window.onload = function () {
swfu = new SWFUpload({
upload_url: "<%=uploadUrl.toString()%>",
file_post_name:"filedata",
post_params: {"fileId":"${fileId}"}, //设置要传的参数
// File Upload Settings
file_size_limit : "1000 MB", //允许上传的最大文件
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_image_url : "images/SmallSpyGlassWithTransperancy_17x18.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 180,
button_height: 18,
button_text : '<span class="button">选择附件 <span class="buttonSmall">(最多XXm)</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
});
};
分享到:
相关推荐
注意:SWFUpload组件的版权归原作者所有 内含说明
swfupload 支持flash10 实例swfupload 支持flash10 实例swfupload 支持flash10 实例swfupload 支持flash10 实例swfupload 支持flash10 实例
swfupload上传图片控件,支持删除。兼容浏览器ie7+,火狐,谷歌。上传界面类似QQ空间发表说说界面。
swfupload 使用时会有ie兼容性问题。将这个js拷贝覆盖则能解决ie9ie10下面不能加载上传组件的兼容性问题。
swfupload 异步上传文件,支持进度条上传
swfupload
在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 Race-conditions when files are cached 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和后续扩展 ...
SWFUpload是一个客户端文件上传工具,官网http://code.google.com/p/swfupload/ 其中常用的功能之一...IE9下面“选择照片”按钮不显示(SWFUpload ie9 bug)Firefox,Chrome 报错302(Firefox , Chrome SWFUpload 302 )
在网上找了很久swfupload.swf的源码,希望使其支持qtp真实煞费苦心啊。 我已经做好了,可直接下载
swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)swfupload(new)
jquery+swfupload+servlet_多文件上传,支持ctrl和shift多选择的功能。值得一看。
最新swfupload文件上传,所用技术swfupload:flash+js
仿58网赶集网百姓网swfupload图片上传效果-修改版 获取了上传后的文件路径。
swfupload .net swfupload配置示例
thinkphp结合swfupload多文件上传插件 包含sql文件,记得修改配置
SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版SWFUpload v2.5.0版
swfupload flash上传兼容所有浏览器
SWFUpload_V2.2.0例子 SWFUpload_V2.2.0_说明文档 SWFUpload中文教程
SWFUpload上传,进度条乱码,flash11.8,vs2010,视频播放,音频播放
最新版说明文档--SWFUpload V2.2.0,更新时间:2008-11-07。 SWFUpload提供的主要功能: * 在文件选择对话框中能够进行文件多选 ... * 对FLASH 9和FLASH 10播放器的支持(V2.2.0版本放弃了对Flash 8的支持)