swfUpload火狐不支持修改

在项目中要用到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;[color=red]jsessionid="+session.getId());[/color]%>
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
});
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值