2015-05-21 3 views
1

У меня проблема с двумя или более файлами. этот код является кулинарной формой разработки приложений Yii (2-е издание), глава 4 я использовать Yii 1.1.14CUploadedFile in yii

Контроллер:

<?php 
class UploadController extends Controller 
{ 
    function actionIndex() 
    { 
     $dir = Yii::getPathOfAlias('application.uploads'); 
     $uploaded = false; 
     $model=new Upload(); 
     if(isset($_POST['Upload'])) 
     { 
      $model->attributes=$_POST['Upload']; 
      $files=CUploadedFile::getInstances($model,'file'); 
      if($model->validate()){ 
       foreach($files as $file) 
        $file->saveAs($dir.'/'.$file->getName()); 
      } 
     } 
     $this->render('index', array(
      'model' => $model, 
      'dir' => $dir, 
     )); 
    } 
} 

Модель:

<?php 
class Upload extends CFormModel 
{ 
    public $file; 
    public function rules() 
    { 
     return [ 
      ['file', 'file', 'types'=>'jpg'], 
     ]; 
    } 
} 

вид:

<?php if($uploaded):?> 
<p>File was uploaded. Check <?php echo $dir?>.</p> 
<?php endif ?> 
<?php echo CHtml::beginForm('','post',array('enctype'=>'multipart/form- data'))?> 
    <?php echo CHtml::error($model, 'file')?> 
    <?php echo CHtml::activeFileField($model, "[0]file")?> 
    <?php echo CHtml::activeFileField($model, "[1]file")?> 
    <?php echo CHtml::submitButton('Upload')?> 
<?php echo CHtml::endForm()?> 

помогите мне, пожалуйста

+0

Это поможет вам загружать несколько файлов http://www.yiiframework.com/wiki/567/multiple-files-uploader-with-cmultifileupload/ –

ответ

2
  1. Вы должны исправить форму enctype, используйте multipart/form-data вместо multipart/form- data.

  2. Вы можете использовать CMultiFileUpload

контроллер:

$images = CUploadedFile::getInstancesByName('image'); 
foreach ($images as $image => $pic) { 
} 

вид:

$this->widget('CMultiFileUpload', array(
    'name' => 'image', 
    'accept' => 'jpeg|jpg|gif|png', 
    'duplicate' => 'Duplicate file!', 
    'denied' => 'Invalid file type', 
)); 

Добавить в модель параметров 'MAXFILES', если вам нужна проверка, чтобы правильно работать многофайлов.

public function rules() 
{ 
    return array(
     array('image', 'file', 'types'=>'jpg,gif,png', 'maxSize'=>'204800', 'allowEmpty'=>true, 'maxFiles'=>4), 
    ); 
} 
+0

Спасибо, но почему? почему автор использует этот код, пока он не работает? –