2016-07-27 6 views
1

несколько файлов, не загруженных с помощью yii2, данные не сохраняются в базе данных. Он показывает эту ошибку. Htmlspecialchars() ожидает, что параметр 1 будет строкой, заданный массив.многократная загрузка файла не работает в yii2

Myform:

echo $form->field($model, 'product_img[]')->fileInput(['multiple' => true]); 

Модель:

{ 
    return [ 

    [['product_img'],'file', 'maxFiles' => 2], 
    ]; 
} 

Контроллер:

public function actionCreate() 
{ 
    $model = new Product(); 

    if ($model->load(Yii::$app->request->post())) { 

     $model->file = UploadedFile::getInstances($model, 'product_img'); 
     foreach ($model->file as $file) { 

     $model2 = new Product(); 

     $model2->load(Yii::$app->request->post()); 
     $model2->product_img='uploads/' . $file; 


     $sql = 'INSERT INTO `product`(`p_id`, `category`, `sub_category`, `product_img`, `product_name`) VALUES (Null,"'.($model2->category).'","'.($model2->sub_category).'","'.($model2->product_img).'","'.($model2->product_name).'")'; 
     $command = \Yii::$app->db->createCommand($sql); 
     $command->execute(); 
      $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension); 

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

    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 
+0

[Yii2 загрузить несколько файлов ] (http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html#uploading-multiple-files) –

+0

не работает для меня. –

+0

@IlakkiyaM Отправил ответ. Пожалуйста, проверьте, работает ли его рабочий –

ответ

2

следующую строку в действие контроллера неправильно

$model2->product_img='uploads/' . $file; 

$file является объектом не строка

Вы, возможно, потребуется изменить эту строку

$model2->product_img = 'uploads/' .$file->baseName; 

или, если вы собираетесь получить доступ к файлу позже, используя эту колонку

$model2->product_img = 'uploads/' .$file->baseName . '.' . $file->extension;