Uploadify插件在火狐下报HTTP Error (302)错误

发布时间:2016-03-24 浏览次数:2758 文章来源:个人博客

最近开发一个项目,集成了批量上传文件插件Uploadify,在谷歌Chrome和IE下都能正常上传,只有火狐下提示HTTP Error错误。


这个问题在网上找寻许久,才找到原因(不知道是搜索关键词不对还是网上资料少)。


原因是因为由于我在做的是会员登录上传头像,需要验证登录后才能上传图片(即在处理上传图片的PHP代码前面,加入了判断用户是否登录的验证)。而flash在firefox下重新发起session会话,这样的话,用于判断用户是否登录session中的值就不存在,也就是用户并未登录,这样就会报错。


解决办法:

在uploadify发送的时候,连同session_id一起post或者get,这样在服务器上初始化session_id即可获取到用户的登录。


代码如下:

客户端(ThinkPHP上传文件模板)代码

$(function() {
  $('#file_upload').uploadify({
    'formData': {
           '<{:session_name()}>': '<{:session_id()}>', //此处获取SESSIONID
           'timestamp': '<{$timestamp}>',
           'token': '<{$token}>'
          }
    //后边对于解决本问题无关代码省略。。。
  })
})



服务器端(ThinkPHP控制器)代码

//初始化执行
public function _initialize(){
   //此处为解决Uploadify在火狐下出现http 302错误 重新设置SESSION
   $session_name= session_name();
   if(isset($_POST[$session_name])) {
     session_id($_POST[$session_name]);
     session_start();
   }
   //执行登陆验证检测函数
   $this->powerverify();       
}


key-word
Uploadify上传报错 uploadify出错 uploadify HTTP Error