在我的表格中,我使用了以下代码:
<?php echo Html::fileInput('imageFile', '', array('id' => 'contentForm_imageFile' )) ?>
我尝试使用以下代码获取控制器中的文件:
$newsModel->imageFile=UploadedFile::getInstance(Yii::$app->request->post('imageFile'), 'imageFile');
$newsModel->imageFile->saveAs( 'uploads/'.$newsModel->file->basename.'.'.$newsModel->file->extension );
但是在使用上面的代码保存文件时我收到此错误:
在null
上调用成员函数saveAs()
因为yii\web\UploadedFile
的API文档说明了:
getInstance()返回给定模型属性的上传文件, 该文件应使用上传 YII \部件\ ActiveField ::的FileInput()。
那么我怎样才能获得通过yii\helpers\Html::fileInput
上传的上传文件?
答案 0 :(得分:1)
您可以使用getInstanceByName()
获取没有模型的上传文件$newsModel->imageFile = UploadedFile::getInstanceByName('imageFile');
$newsModel->imageFile->saveAs( 'uploads/'.$newsModel->file->basename.'.'.$newsModel->file->extension );
答案 1 :(得分:0)
以下是适合您情况的官方示例:http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html
请仔细检查您的代码:
enctype="multipart/form-data"
吗?var_dump($_FILES);
答案 2 :(得分:0)
要形成添加'enctype' => 'multipart/form-data'
在视图中:
<?= $form->field($model, 'imageFile')->fileInput(['id' => 'contentForm_imageFile']) ?>
或者
<?= Html::activeFileInput($model, 'imageFile', ['id' => 'contentForm_imageFile']) ?>
在控制器
中$newsModel->imageFile = UploadedFile::getInstance($newsModel, 'imageFile');
$newsModel->imageFile->saveAs( 'uploads/'.$newsModel->file->basename.'.'.$newsModel->file->extension );