1 //控制器層 2 3 <?php 4 namespace appcontrollers; 5 6 use appmodelsUploads; 7 use Yii; 8 use yiiwebController; 9 use yiiwebUploadedFile; 10 11 class UploadsController extends Controller 12 { 13 public function actionUpload() 14 { 15 //實例化數據表 16 $model = new Uploads(); 17 $id = yii::$app->db->createCommand("select id from upload order by id desc limit 1")->queryOne(); 18 $cid = $id['id']; 19 //判斷傳值方式是否為post提交方式 20 if (Yii::$app->request->isPost) { 21 $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles'); 22 $model->imageFiles = $model->upload(); 23 $arr = $model->imageFiles; 24 foreach ($arr as $key=>$val){ 25 yii::$app->db->createCommand("insert into uploads (cid,imageFiles) values ('$cid','$val')")->execute(); 26 } 27 } 28 return $this->render('upload', ['model' => $model]); 29 } 30 } 31 32 33 //模型層 34 35 <?php 36 namespace appmodels; 37 38 use yiidbActiveRecord; 39 40 class Uploads extends ActiveRecord 41 { 42 //設定圖片上傳驗證規則 eg:上傳圖片格式&圖片個數等等 43 public function rules() 44 { 45 return [ 46 [['imageFiles'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg', 'maxFiles' => 8], 47 ]; 48 } 49 50 public function upload() 51 { 52 if ($this->validate()) { 53 foreach ($this->imageFiles as $file) { 54 $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension); 55 //實現文件上傳入庫路徑全名 56 $arr[] = 'http://www.wechat.com/uploads/' . $file->baseName . '.' . $file->extension; 57 } 58 return $arr; 59 } else { 60 return false; 61 } 62 } 63 }
下面是视图层
1 <?php 2 use yiiwidgetsActiveForm; 3 ?> 4 5 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?> 6 7 <?= $form->field($model, 'imageFiles[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?> 8 9 <button>Submit</button> 10 11 <?php ActiveForm::end() ?>