2014-02-18 5 views
4

получили ответYii CMultiFileUpload выбрать несколько файлов

Для загрузки несколько файлов в базу данных для регистрации пытались так много способов, чтобы сделать несколько файлов для загрузки работоспособными используя 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

+3

Лучшее, чтобы ответить на ваш вопрос с помощью решения, которое вы нашли. Другим людям также может помочь. – Blizz

ответ

3

Вот простейший код для нескольких файлов Загрузить в 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', 

     ) 
     );?> 
+0

Не хотите ли вы объяснить этот код? – Saani

0

Это было все вверх для многократной загрузки - это хорошо, но для выбора нескольких you can try this yii extension

Я надеюсь, что эта ссылка будет помогать кому-то, потому что я боролся с затем несколько файлов выбора для последующей загрузки. Провел много времени в поиске Google. Cheers

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