Yii2.0使用UploadedFile类文件上传

yii2.0实现文件上传首先应该传建一个模型,在文件上传的模型UploadForm.php我写了以下内容:

<?php
namespace app\models;

use yii\base\Model;
use yii\web\UploadedFile;

/**
 * UploadForm is the model behind the upload form.
 */
class UploadForm extends Model
{
    /**
     * @var UploadedFile file attribute
     */
    public $file;

    /**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
            [['file'], 'file'],
        ];
    }
}
以上内容是一些规则,验证了上传文件的真实性,然后在控制层需要调用这个文件上传的类
use app\models\UploadForm;
use yii\web\UploadedFile;

首先我们需要渲染表单:

#yii框架文件上传类
public function actionTest(){
    $this->layout=false;
    $model = new UploadForm();
    return $this->render('test', ['model' => $model]);
}

test.php中写入了如下内容:

<form id="w0" action="/index/dotest" method="post" enctype="multipart/form-data">
<div class="form-group field-uploadform-file">
    <input type="hidden" name="UploadForm[file]" value=""><input type="file" id="uploadform-file" name="UploadForm[file]">
</div>
<button>确认上传</button>
</form>
dotest操作名作了以下操作,然后将你上传的文件就自动上传到了你跟路径web下的uploads文件夹下,
public function actionDotest(){
    $model = new UploadForm();
    if (Yii::$app->request->isPost) {
        $data=$model->file = UploadedFile::getInstance($model, 'file');
        $array = (array)$data;
        if ($model->file && $model->validate()) {
            $model->file->saveAs('uploads/' . $model->file->baseName . '.' . $model->file->extension);
        }
    }
}


猜你喜欢

转载自blog.csdn.net/li_lening/article/details/80712468