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][1]