`

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;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
});
};
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics