图片上传
Yii文件上传和多文件上传
model层代码
<?php
namespace frontend\models;
use yii\base\Model;
use yii\web\UploadedFile;
class Upload extends Model
{
/**
* @var UploadedFile
*/
public $imageFiles;
public function rules()
{
return [
[['imageFiles'], 'file','extensions' => 'png, jpg','maxFiles' => 4],
];
}
public function attributeLabels()
{
return [
'imageFiles'=>'文件上传',
];
}
public function upload()
{
if ($this->validate()) {
//print_r($this->imageFiles);die; 单文件上传去掉foreach循坏
foreach ($this->imageFiles as $file) {
$file->saveAs('uploads/' . $file->baseName . '.' . $file->extension);
}
//print_r($this->imageFiles);die;
return true;
} else {
//print_r($this->imageFiles);die;
return false;
//echo 1;
}
}
}
controller控制器代码
<?php
namespace frontend\controllers;
use frontend\models\Upload;
use Yii;
use yii\web\Controller;
use frontend\models\Form;
use yii\web\UploadedFile;
class FormController extends Controller
{
public function actionIndex()
{
$models=new Upload();
$model=new Form();
return $this->render('index',['model'=>$model,'models'=>$models]);
}
public function actionAdd()
{
$post = Yii::$app->request->post();
$model = new Upload();
if (Yii::$app->request->isPost) {
$model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
if ($model->upload()) {
$image=$_FILES['Upload']['name']['imageFiles'];
print_r($image);
return;
}
}
}
}
view视图层代码
<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal','enctype' => 'multipart/form-data'],
'action'=>'?r=form/add',
'method'=>'post',
]) ?>
<?= $form->field($models, 'imageFiles[]')->fileInput(['multiple' => true,'accept' => 'image/*']) ?>
<div class="form-group">
<div class="col-lg-offset-1 col-lg-11">
<?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?>
</div>
</div>
<?php ActiveForm::end() ?>