Я использую плагин загрузки файлов blueimp с Yii, чтобы попытаться загрузить файл на мой сервер (в настоящее время localhost). Я дал папке полные права на чтение / запись (расположение C: \ xampp \ htdocs \ yii), но я все еще получаю сообщение об ошибке, когда пытаюсь выполнить команду файла move_uploaded.
Вот основная форма и область входного файла:
<form id='upload' method='post' action='?r=site/move' enctype='multipart/form-data' style="padding:0;">
<span class="btn fileinput-button" style="padding:0">
<i class="glyphicon glyphicon-picture">
<input id="fileupload" type="file" accept="image/*" name="attachment" onchange="attachAttachment()">
</i>
</span>
</form>
Вот загрузка файла blueimp (в функции ()):
$("#fileupload").fileupload
({
dataType: 'json',
done: function (e, data)
{
console.log("YAY");
},
fail: function(e, data)
{
console.log("FAIL");
}
});
Вот actionMove, где я перемещаю файл из временного каталога в папку:
public function actionMove()
{
if (isset($_FILES['attachment']) && $_FILES['attachment']['error'] == 0)
{
if (move_uploaded_file($_FILES['attachment'], Yii::getPathOfAlias('webroot')."/images/uploads")){
$response = '{"status":"success"}';
}
else {
$response = '{"status":"error"}';
}
echo $response;
exit();
}
}
Я был в этом в течение нескольких часов, любая помощь приветствуется 🙁
$_FILES['attachment']
ссылается на все данные о загрузке. move_uploaded_file
использует имена файлов для работы. Вот что вы должны попробовать:
$uploadPath = Yii::getPathOfAlias('webroot')."/images/uploads";
$uploadFilename = basename($_FILES['attachment']['name']);
$tempFilename = $_FILES['attachment']['tmp_name'];
$ok = move_uploaded_file($tempFilename, $uploadPath.'/'.$uploadFilename);
if ($ok) {
$response = '{"status":"success"}';
} else {
$response = '{"status":"error"}';
}
Подробнее об этом на страницах документации:
http://php.net/manual/fr/features.file-upload.post-method.php
а также
http://php.net/manual/fr/function.move-uploaded-file.php
Надеюсь, поможет.
Других решений пока нет …