Получил ответ
Чтобы загрузить несколько файлов в базу данных для регистрации, вы пытались так много способов сделать работу с несколькими файлами работоспособными с помощью виджета CMultiFileUpload. Уже, я проверил и последовал ниже ссылок –
http://www.yiiframework.com/forum/index.php/topic/47665-multiple-file-upload/
Yii загрузка нескольких файлов
НО еще не повезло !!
Ошибка: сохранение данных, но файлы не загружаются, пожалуйста, помогите. Вот мой код:
Поставить в известность
<?php $this->widget('CMultiFileUpload', array( 'model'=>$model, 'attribute' => 'documents', 'accept'=>'jpg|gif|png|doc|docx|pdf', 'denied'=>'Only doc,docx,pdf and txt are allowed', 'max'=>4, 'remove'=>'[x]', 'duplicate'=>'Already Selected', ) );?>
Код контроллера
public function actionRegistration() { $model=new PatientRegistration; $this->performAjaxValidation($model); if(isset($_POST['PatientRegistration'])) { $model->attributes=$_POST['PatientRegistration']; if($model->validate()) { if(isset($_POST['PatientRegistration'])) { if($filez=$this->uploadMultifile($model,'documents','/Images/')) { $model->documents=implode(",", $filez); } $model->attributes=$_POST['PatientRegistration']; if($model->save()) { // $this->render('registration',array('model'=>$model)); $this->redirect(array('/patientregistration/patientview','id'=>$model->register_id)); } } } } $this->render('registration',array('model'=>$model)); } public function uploadMultifile($model,$attr,$path) { /* * path when uploads folder is on site root. * $path='/uploads/doc/' */ if($sfile=CUploadedFile::getInstances($model, $attr)){ foreach ($sfile as $i=>$file){ // $formatName=time().$i.'.'.$file->getExtensionName(); $fileName = "{$sfile[$i]}"; $formatName=time().$i.'_'.$fileName; $file->saveAs(Yii::app()->basePath.$path.$formatName); $ffile[$i]=$formatName; } return ($ffile); } }
Добавить в виджет CActiveForm
'htmlOptions' => array( 'enctype' => 'multipart/form-data', ),
Следовательно, вы можете использовать этот код для загрузки нескольких файлов в yiiframework
Вот простейший код для загрузки нескольких файлов в Yii Framework
код
В контроллере
public function actionCreate() { $model = new Upload; echo Yii::app()->basePath.'/Images/'; if(isset($_POST['Upload'])) { if($filez=$this->uploadMultifile($model,'Document','/Images/')) { $model->Document=implode(",", $filez); } $model->attributes=$_POST['Upload']; if ($model->save()) { $this->redirect(array('view', 'id' => $model->idUpload)); } } $this->render('create', array( 'model' => $model, )); } //Function for uploading and saving Multiple files public function uploadMultifile ($model,$attr,$path) { /* * path when uploads folder is on site root. * $path='/uploads/doc/' */ if($sfile=CUploadedFile::getInstances($model, $attr)){ foreach ($sfile as $i=>$file){ // $formatName=time().$i.'.'.$file->getExtensionName(); $fileName = "{$sfile[$i]}"; $formatName=time().$i.'_'.$fileName; $file->saveAs(Yii::app()->basePath.$path.$formatName); $ffile[$i]=$formatName; } return ($ffile); } }
Поставить в известность
<?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'upload-form', // Please note: When you enable ajax validation, make sure the corresponding // controller action is handling ajax validation correctly. // There is a call to performAjaxValidation() commented in generated controller code. // See class documentation of CActiveForm for details on this. 'enableAjaxValidation'=>false, 'htmlOptions' => array( 'enctype' => 'multipart/form-data', ), )); ?> <?php $this->widget('CMultiFileUpload', array( 'model'=>$model, 'attribute' => 'Document', 'accept'=>'jpg|gif|png|doc|docx|pdf', 'denied'=>'Only doc,docx,pdf and txt are allowed', 'max'=>4, 'remove'=>'[x]', 'duplicate'=>'Already Selected', ) );?>
Это все для многократной загрузки – это хорошо, но, как и для множественного выбора, вы можете попробовать это расширение yii
Я надеюсь, что эта ссылка поможет кому-то, потому что я боролся с несколькими файлами выбора для последующей загрузки. Провел много времени в поиске Google. ура