加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解决ssh项目用swfupload上传文件时session丢失问题.

发布时间:2020-12-15 18:50:02 所属栏目:百科 来源:网络整理
导读:在ssh项目中集成了swfupload做文件上传,之前一直都工作得挻好,直到新杀到一员工,他的机器新颖,预装的是IE9,我叫他卸了,装IE8(因为项目主要是在IE8中使用),结果win7提示不能装IE8.得了,那就用IE9吧,顶多再装一个IETester.就这样,这位新同学一直用他的IE9测试

在ssh项目中集成了swfupload做文件上传,之前一直都工作得挻好,直到新杀到一员工,他的机器新颖,预装的是IE9,我叫他卸了,装IE8(因为项目主要是在IE8中使用),结果win7提示不能装IE8.得了,那就用IE9吧,顶多再装一个IETester.就这样,这位新同学一直用他的IE9测试系统,有一天他发一个bug,就是用IE8能上传文件,用IE9就不行,神马...上传文件都跟浏览器有关系...晴天霹雳...亲自去验证了下,结果真是这样.是什么回事呢...苦思一阵,无果.只有断点调试了.发现请求根本没有传给action,而是被权限过滤器(Filter)给栏住了,此过滤器会去session中取出登录用户,并验证是否有权访问此URL,结果在session中没有取到用户,而直接拒绝访问此URL,怎么会在session中取不到用户呢,经过努力调试发现,swfupload上传文件时,重新创建了一个session,此新session肯定找到不到登录用户.于是想能不能让它不创建session,而重用现在的session呢.最后还是找到解决方案,那就是使用URL重写技术,将jsessionid写在url后面,就可以重用现在的session了.

没有使用URL重写技术的示例代码如下:


var settings={
	upload_url: "/common/adjunct.do?method=swfuploadFile",//...
};
swfu = new SWFUpload(settings);

使用了URL重写技术后的代码如下:

var settings={
	upload_url: "/common/adjunct.do;jsessionid="+jsessionid+"?method=swfuploadFile",//...
};
swfu = new SWFUpload(settings);
注意:上面的jsessionid变量的值是当前session对象的id(request.getSession().getId())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读