Yii2:无法通过FileUploadUI

时间:2018-03-02 11:29:38

标签: yii2 yii2-advanced-app multifile-uploader

我正在尝试通过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 '';
    }

1 个答案:

答案 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/'));