uploadify上传文件在360浏览器急速模式下失败

来源:互联网 发布:优美的句子 知乎 编辑:程序博客网 时间:2024/04/28 12:55

使用uploadify控件操作文件上传,发现此控件是单个文件上传,比如我选择了5个文件,点击上传,是分别调用5次上传方法进行保存;

在IE9+及谷歌下操作均正常,360浏览器兼容模式下也能正常操作,但是360极速模式下报302错误,网上找资料讲的基本上是:

1、js或css文件路径不对,比如:IE、谷歌<script type="text/javascript" src="uploadify/jquery.uploadify.js"></script>

但是在360极速模式下需要<script type="text/javascript" src="/uploadify/jquery.uploadify.js"></script>或<script type="text/javascript" src="./uploadify/jquery.uploadify.js"></script>

2、路径请求:如下图


需要在swf文件路径后添加随机数保证每次请求不同;

总结:以上好像针对老版本的可以生效,但是新版本的uploadify似乎不行;

最后发现,原因是uploadify发送请求时,360浏览器极速模式下不发送session(网上查询得出),拦截器获取的session一直为null,导致拦截判断当前未登录而没有进行上传操作(用户未登录无法获取当前操作人员);

以下为拦截器代码:


开始想:在初始化上传页面的时候生成个随机数,然后将随机数保存在session中,并且发送到页面,保存时讲这个随机数带到后台,判断session是否存在这个随机数,存在即让通过;测试发现,通过session.getAttribute("随机数Id")一直未null;

后来通过获取初始化时的sessionId和上传请求是的sessionId发现,并不是同一个session,由于uploadify上传操作请求,是基于插件发出的,和浏览器的请求有区别;

最后只能在用户登录成功之后,将session保存到一个Map集合中,key为sessionId,在页面初始化话是,将sessionId带到页面,随着上传请求一起发送到后台,然后验证当前session如果为空时(上面讲了360浏览器不发送session导致session为空),拿到上传操作中的sessionId,到Map集合中验证是否存在session,如存在,则说明用户已经登陆,正常通过;

0 0
原创粉丝点击