【转】小议swfupload的bug及解决之道
前
段时间公司出了个变态需求,要求上传文件时支持多文件上传,实时显示上传进度,上网搜索一番,决定使用swfupload这个基于flash的上传组件.
花了几天时间搞定,页面效果也相当令人满意.但是swfupload选中多个文件后,它的上传处理方式是每上传完一个文件就结束action,意即一个
action无法接收多个文件,于是问题来了,我想在所有文件上传完成后再执行一些操作,该怎么办呢,最简单的方法莫过于每上传完一个文件,就把它放到
session里,最后所有文件都上传完成后从session里取得这些文件进行处理.
问题是解决了,接下来有一次我打开Firefox进
行上传操作,却发现了奇怪的问题,上传完成后取不到这些文件了.费了一番周折,我试着在后台打出sessionId看看,却发现上传完成转入另一个
action后sessionId离奇般的换了一个!众所周知,session实现原理有两个,cookie和url重写,难道是swfupload上传
的时候丢失了sessionid?( 关于session的原理请参见我的另一篇文章Session原理
,
这里就不再详述.),于是我打开HttpLook工具(关于该工具的使用请自行baidu之或google之.)对操作进行监听,发现FireFox在上
传时并没有把Cookie中的JSESSIONID放到HEADER中返回服务器,然而IE下却是正常的.于是我上网搜索了一下,终于找到了原因:
这
是swfupload的一个bug(严格的说是Flash
Player的bug,所有基于flash的上传组件都存在这个问题,只能等待Flash官方进行修复),在使用swfupload的时候,非IE浏览器
只会把持久化的cookie传回服务器,而session却是保存在内存中的cookie,swfupload不会把内存中的cookie传给服务器,这
是flash的一个bug,我们只能绕过它.我又找了一下,发现swfupload官方有关于这方面的讨论,也讲了绕过的方法,不过都是ASP或PHP的
代码,没有JAVA的,网上找了很久也没有,看样子我只能自己想办法解决了.
一开始我想能不能传个sessionId给服务器,然后让服务
器获得这个session呢?但是马上我就放弃了,servlet-api并没有提供访问其他session的方法.于是我想,session实现原理有
两个,cookie和url重写,cookie貌似不行了,那url重写呢?url重写也就是在action后面加
上";jsessionid=*************************"这样的方式,于是我修改了一下swfupload的初始化配置,原来
是这样的(截取一部分):
var settings = {
flash_url : "<%=request.getContextPath()%>"+"/script/swfupload/swfupload.swf",
upload_url: "upload.action" //处理文件上传的action
}
修改后如下:
var settings = {
flash_url : "<%=request.getContextPath()%>"+"/script/swfupload/swfupload.swf",
upload_url: "upload.action;jsessionid=<%=ActionContext.getSession().getId()%>" //处理文件上传的action
}
修改好后在Firefox下重试了一下,竟然成功了,很好.
经过这次的编程,我对session的实现原理认识更深刻了.
分享到:
相关推荐
【小议一年级教学解决问题的现状和解决策略】 数学是一门高度抽象和概括的学科,对于刚入学的一年级学生来说,可能会感到相对枯燥无趣。在这个关键的学习阶段,培养学生的解决问题能力至关重要,因为这不仅影响他们...
小议经济型酒店消费者心理及消费方向.doc
【水工建筑物的分类及特点】 水工建筑根据使用期限和功能可以分为临时性和永久性,通用性和特地性。这类建筑的特点包括受自然条件(地形、水文、地质、气象)的强烈影响,施工条件复杂,如需应对水压力、渗透压力、...
小议员工跳槽成因及对策.pdf
小议转型社会下的社保规则入宪.doc
小议债务债券抵押及发展趋势.doc
小议气象影视状况及服务办法.doc
小议中国市场现状及经济发展探究.docx
小议数控技术发展现状及趋势.doc
小议形象权的属性及保护.doc
此外,竞价规则、地块现状说明、规划设计条件、合同条件及附件等也是竞价文件不可或缺的部分,它们共同构成了竞价转让文件的完整框架。 在竞价文件编制的过程中,必须注意几个关键问题。首先是文件格式和内容的一致...
### 抖动算法小议——深入探讨多媒体技术中图像的抖动算法 #### 引言 在多媒体领域,尤其是在图像处理技术中,抖动算法扮演着至关重要的角色。本文旨在通过对抖动算法的深入解析,帮助读者理解其原理及其在灰度...
【股东转让出资的法律问题】 在有限责任公司中,股东转让出资是公司运营中常见的现象,这一行为涉及到股东权益、公司稳定以及法律规定的执行。《中华人民共和国公司法》对此进行了详细规定,旨在平衡各方利益,防止...
小议电子工艺学之电烙铁使用方法浅析.doc
小议公文文种的适用及特点探究.doc
小议国际工程的结构模式及选择.pdf
小议战略性贸易的实践及意义.doc
小议审计质量控制的问题及对策.doc
小议EC加IO联合模型及应用.doc
小议外汇期权会计在新规则中应用 本文主要探讨了小议外汇期权会计在新规则中的应用,涉及到外汇期权的概念、分类、确认、计量和披露等方面的知识点。 一、外汇期权的概念 外汇期权是一种金融衍生工具,允许持有人...