PHP之uploadify在框架中上传302错误的总结

首先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错误的提示了。

参考文档:解决jQuery上传插件Uploadify出现Http Error 302错误的方法——作者:lijiao

添加新评论