首先http 302是请求被重定向的意思,这就很容易理解了,如果你的uploadify处理上传脚本有session验证,就会出现此错误,因为flash在执行post请求的时候没有包含cookie信息,而服务器的session会根据客户端的cookie来得到SESSIONID。没有提交cookie自然就不能获取到session,然后uploadify就返回了302(请求被重定向)的错误。
已知的uploadify上传出现302浏览器有:谷歌、IE...
解决办法:
把session传到服务器,代码如下:
<?php $timestamp = time(); ?>
$(function() {
$('#file_upload').uploadify({
'formData' : {
'timestamp' : '<?php echo $timestamp;?>',
'token' : '<?php echo md5('unique_salt' . $timestamp);?>',
},
'queueID' : 'queue',
'auto' : false,
'fileSizeLimit': '2048KB',
'buttonText' : '选择文件',
'fileTypeExts' : '*.doc;*.docx;*.pdf;',
'swf' : '<?php echo base_url("js/uploadify/uploadify.swf");?>',
'uploader' : '<?php echo base_url("module/files/main/uploadify?type={$type_id}?PHPSESSID={$sessid}")?>',
'onQueueComplete' : function(queueData) {
alert(queueData.uploadsSuccessful + '个文件上传成功!');
},
});
});
在后端的验证用户登录的代码之前加入:
function __construct() {
parent::__construct();
$session_name = session_name();
if (isset($_POST[$session_name])) {
session_id($_POST[$session_name]);
session_start();
}
// 检测是否登陆
if ( !$this->session->valid_user() ) redirect( module_url( 'common/login' ) );
}
这样便可解决,上传302错误的提示了。