Uploadify在yii中给出错误HTTP错误(302)

时间:2014-03-25 06:46:20

标签: php ajax session yii uploadify

昨天我将uploadify集成到Yii应用程序中并且运行良好。但突然间我发现它不起作用而是显示错误HTTP Error (302)。我发现这只发生了firefox,IE和Cr​​ome都没关系。

在main.php文件的下面我写道:

<?php $timestamp = time();?>
$(function() {
    $('#file_upload').uploadify({
        'method'   : 'post',
        'auto'     :false,
        'multi'    : true,
        'formData'     : {
            'timestamp' : '<?php echo $timestamp;?>',
            'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
        },
        'swf'      : '<?php echo Yii::app()->request->baseUrl; ?>/images/uploadify.swf',
        'uploader' : '<?php echo Yii::app()->createUrl('cp/project/UploadImage')?>'

    });
});

并在控制器中:

public function actionUploadImage(){
    $directory = Yii::getPathOfAlias('webroot').'/images/temp';
    if (!is_dir($directory)) {
        mkdir($directory, 0777, true);
    }

    $verifyToken = md5('unique_salt' . $_POST['timestamp']);

    if (!empty($_FILES) && $_POST['token'] == $verifyToken) {

        $tempFile = $_FILES['Filedata']['tmp_name'];

        $filename  = basename($_FILES['Filedata']['name']);
        $extension = pathinfo($filename, PATHINFO_EXTENSION);
        $newName       = md5(time()).'.'.$extension;

        $targetFile = $directory . '/' . $newName;

        $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
        $fileParts = pathinfo($_FILES['Filedata']['name']);

        if (move_uploaded_file($tempFile,$targetFile))
        {
            $model = new ImageTemp();
            $model->user_id = Yii::app()->user->id;
            $model->image_hash = $newName;
            $model->session_id = Yii::app()->session['imageUpload'];
            $model->save();
        }

    }
}

一切都很好但突然间,我一直面临着这个错误。

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题,并在这里给出答案,如果有人得到任何帮助我如何解决。根据我在控制器开头写的uploadify http://www.uploadify.com/documentation/uploadify/using-sessions-with-uploadify/http://www.uploadify.com/documentation/uploadify/customizing-the-server-side-upload-script/的引用:

function init(){

    if(isset($_POST['SESSION_ID'])){
        $session=Yii::app()->getSession();
        $session->close();
        $session->sessionID = $_POST['SESSION_ID'];
        $session->open();
    }
}

并将uploadify初始化为:

$session_id = Yii::app()->session->sessionID;
$session_name = 'SESSION_ID';
$swf = Yii::app()->request->baseUrl.'/images/uploadify.swf';
$uploadifyImg = Yii::app()->createUrl('cp/project/UploadImage');
Yii::app()->clientScript->registerScript('uploadify', "

$(function() {
    $('#file_upload').uploadify({
        'method'   : 'post',
        'auto'     :false,
        'multi'    : true,
        'formData' : {'$session_name' : '$session_id'},
        'swf'      : '$swf',
        'uploader' : '$uploadifyImg'

    });
  });
");

面对这样的问题会很有帮助。