昨天我将uploadify集成到Yii应用程序中并且运行良好。但突然间我发现它不起作用而是显示错误HTTP Error (302)
。我发现这只发生了firefox,IE和Crome都没关系。
在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();
}
}
}
一切都很好但突然间,我一直面临着这个错误。
答案 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'
});
});
");
面对这样的问题会很有帮助。