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); } } }