2017-02-17 7 views
0

Я хочу сохранить в моем db несколько изображений (макс. 5), как я могу это сделать? Для сохранения изображений у меня есть этот вход:Сохранение нескольких изображений в yii2

?= $form->field($Form, 'images[]')->fileInput(['multiple' => true, 'accept' => 'image/*','id'=>'gallery-photo-add'])->label(false) ?> 

И в моей модели у меня есть поля изображения и поля для 5 изображений, которые должны спасти; Но когда я пытаюсь получить изображения как то:

$Form->image1 = $this->images[0]; 

Это один пуст в моем дб. Может быть, проблема в том, что массивные сохранены в $ _FILES? Что я имею в моей просьбе:

$_FILES 
Name Value 
Form [ 
    'name' => [ 
     'images' => [ 
      0 => 'weight.png' 
     ] 
    ] 
    'type' => [ 
     'images' => [ 
      0 => 'image/png' 
     ] 
    ] 
    'tmp_name' => [ 
     'images' => [ 
      0 => 'W:\\XAMPP\\tmp\\php3FD3.tmp' 
     ] 
    ] 
    'error' => [ 
     'images' => [ 
      0 => 0 
     ] 
    ] 
    'size' => [ 
     'images' => [ 
      0 => 500 
     ] 
    ] 
] 

ответ

0

Чтобы сохранить несколько изображений, вы должны использовать класс UploadedFile Yii2 в. Например, вы хотите сохранить несколько изображений в своей базе данных. Код вашего контроллера является чем-то вроде:

namespace app\controllers; 

use Yii; 
use yii\web\Controller; 
use app\models\UploadForm; 
use yii\web\UploadedFile; 

class SiteController extends Controller 
{ 
    public function actionUpload() 
    { 
     $model = new UploadForm(); 

     if (Yii::$app->request->isPost) { 
      $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles'); 
      if ($model->upload()) { 
       // file is uploaded successfully 
       return; 
      } 
     } 

     return $this->render('upload', ['model' => $model]); 
    } 
} 

Это модель:

namespace app\models; 

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

class UploadForm extends Model 
{ 
    /** 
    * @var UploadedFile[] 
    */ 
    public $imageFiles; 

    public function rules() 
    { 
     return [ 
      [['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4], 
     ]; 
    } 

    public function upload() 
    { 
     if ($this->validate()) { 
      foreach ($this->imageFiles as $file) { 
       $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension); 
      } 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

В функции загрузки вы можете сохранить изображения в вашей БД или сохранить их в папку и записать образ пути к соответствующему полю в вашем столе.

+0

Вы можете прочитать документацию по UploadedFile здесь http://www.yiiframework.com/doc-2.0/yii-web-uploadedfile.html –

Смежные вопросы