在项目中要用到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
});
};
分享到:
相关推荐
在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 Race-conditions when files are cached 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和后续扩展 ...
11. **修复已知bug**:包括IE中的刷新问题,Firefox的滚动条问题,以及一些竞态条件和缓存问题。 12. **ASP.Net Forms兼容**:确保在ASP.Net环境中也能正常工作。 SWFUpload的设计理念是将用户界面的控制权交给...
【KindEditor】则是一个开源的富文本编辑器,支持多种浏览器环境,如Chrome、Firefox、Safari、IE等。它提供了丰富的编辑功能,如文本格式化、插入图片、链接、表格、代码等,同时具备自定义皮肤、多语言支持和可...
在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 Race-conditions when files are cached 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和后续扩展
o 在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 o Race-conditions when files are cached * 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和...
- **bug修复**:解决了V1.0.2版本中存在的若干问题,包括在IE和Firefox中加载Flash的问题。 #### 五、SWFUpload的使用场景及优势 SWFUpload适用于需要高级文件上传功能的Web应用程序,特别是对于需要支持多文件...
SWFUpload是基于Adobe Flash Player插件的,因此可以在大部分现代浏览器中运行,包括Firefox、Chrome、Safari和Opera等。它利用Flash的本地文件访问能力,能够实现异步文件上传,即用户选择文件后,文件会被即时上传...
2. **跨浏览器兼容性**:此功能意味着该系统能够在主流的浏览器如Chrome、Firefox、Safari、IE等上正常工作,确保了广泛的用户覆盖。 3. **缩略图预览**:在文件上传之前或之后,系统能够生成上传图片的缩略图,供...
12. **修复已知问题**:解决了不同浏览器环境下的若干错误,如IE刷新时的Flash加载问题,Firefox的滚动条问题等。 **四、SWFUpload 设计理念与传统HTML上传比较** SWFUpload 的设计目标是将用户界面(UI)的控制权...
13. **修复的bug**:包括IE中刷新导致的Flash加载问题,Firefox的滚动条问题,以及其他竞态条件和缓存问题。 14. **ASP.Net Forms兼容**:与.NET环境良好集成。 **设计原理:** 传统的HTML上传方式简单线性,但...
此外,现代浏览器如Chrome、Firefox等已经默认禁用或逐步移除Flash插件,这使得Flash上传功能在许多情况下无法正常使用。 二、HTML5上传的优势 1. 兼容性:HTML5的File API允许在多个浏览器上实现文件上传,无需...
5. **兼容性测试**:虽然在Chrome 10下已经测试成功,但为了保证广泛兼容性,还需要在其他主流浏览器如Firefox、Safari、IE等进行测试,确保批量图片上传功能的稳定运行。 在提供的压缩包文件中,我们可以看到以下...
2、新增swfupload上传接口,完善系统上传功能,可实现可视化批量上传; 3、新增支付宝标准双接口,同时更新在线支付平台代码; 4、新增图文并茂标签2种Flash焦点图显示效果; 5、新增各个模型SEO优化选项,每篇...
2、新增swfupload上传接口,完善系统上传功能,可实现可视化批量上传; 3、新增支付宝标准双接口,同时更新在线支付平台代码; 4、新增图文并茂标签2种Flash焦点图显示效果; 5、新增各个模型SEO优化选项,每篇...