在Yii中咱们能够应用Yii自带的yii\web\UploadedFile类来实现文件上传

一:创立一个上传的模型类(UploadForm)

<?phpnamespace app\models;use yii\base\Model;/** *上传模型类 */class UploadForm extends Model{    /**     * @var UploadedFile     */    public $imageFile;        //上传验证    public function rules()    {        return [            [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, xlsx'],        ];    }    /**     * function: upload     * author: wangjian     * date: 2019/5/7 16:33     * 文件上传     */    public function upload()    {        if ($this->validate()) {            $dir = 'uploads/';            $fileName = time();            //判断上传目录是否存在,不存在创立一个目录            if (!is_dir($dir)) {                mkdir($dir);            }            //确定上传文件门路            $filePath = $dir . $fileName . '.' . $this->imageFile->extension;            //上传文件            $this->imageFile->saveAs($filePath);            return $filePath;        } else {            //上传失败            return false;        }    }}

如果应用Yii自带的yii\web\UploadedFile类来实现文件上传的话,上传文件的视图能够应用yii\widgets\ActiveForm部件来创立上传表单,例:

<?phpuse yii\widgets\ActiveForm;?><?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?><?= $form->field($model, 'imageFile')->fileInput() ?>    <button>上传</button><?php ActiveForm::end() ?>

如果你不想要应用<?= $form->field($model, 'imageFile')->fileInput() ?>来创立上传控件的话,你应用input来创立上传控件时,这时候input上传控件的name参数必须设置为:

//上传模型类名[上传文件名]UploadForm[imageFile]

二:上传控制器:

//获取上传信息$model->imageFile = UploadedFile::getInstance($model, 'imageFile');//上传$upload = $model->upload();if ($upload) {    // 文件上传胜利}else {    //文件上传失败}

这时候咱们就能够实现文件上传性能了