我正在尝试通过yii2 advanced中的FileUploadUI::widget
上传文件。但我无法实现我的目标。我不知道问题是什么,但文件没有出现在我想上传到的文件夹中。
这是我的观点
<?= FileUploadUI::widget([
'model' => $model,
'attribute' => 'img',
'url' => ['image-upload', 'id' => $model],
'gallery' => false,
'fieldOptions' => [
'accept' => 'image/*'
],
'clientOptions' => [
'maxFileSize' => 2000000
],
// ...
'clientEvents' => [
'fileuploaddone' => 'function(e, data) {
console.log(e);
console.log(data);
}',
'fileuploadfail' => 'function(e, data) {
console.log(e);
console.log(data);
}',
],
]); ?>
这是控制器我的控制器进入后端,但我想将文件上传到 frontend/web/img/temp
操作
public function actionImageUpload()
{
$model = new MyNews();
$imageFile = UploadedFile::getInstance($model, 'img');
$directory = Yii::getAlias('/../frontend/web/img/temp/');
if ($imageFile != null) { //can't saveAs() file into my ../img/temp/ folder
$uid = 'qqqq';
$fileName = $uid . '.' . $imageFile->extension;
$filePath = $directory . $fileName;
if ($imageFile->saveAs($filePath)) {
$path = '/../frontend/web/img/temp/' . $fileName;
//.....
}
}
return '';
}
答案 0 :(得分:0)
您应该使用Yii定义的aliases
,例如@frontend
@backend
,而不是在Yii::getAlias()
内提供路径,很少见,如我所声明的 { {1}} 喜欢
common/config/bootstrap.php
您提供的路径也是错误的,因为Yii位于 Yii::setAlias ( '@frontend' , dirname ( dirname ( __DIR__ ) ) . '/frontend' );
Yii::setAlias ( '@backend' , dirname ( dirname ( __DIR__ ) ) . '/backend' );
内,而不是您尝试上传的backend/web/
应用的根目录。
我建议您在 backend
中定义您的路径,如下所示
common/config/bootstrap.php
然后将您的代码更改为以下
Yii::setAlias('@uploadDir',realpath(Yii::getAlias('@frontend').'/web/img/temp/'));