最近开发一个项目,集成了批量上传文件插件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();
}