CUploadedFile in yii


CUploadedFile in yii

我的问题是两个或更多的文件。本代码来源于Yii应用程序开发指南(第2版)第4章我使用Yii 1.1.14

控制器:

<?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()?>

请帮帮我

  1. 你应该修复表单格式,用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),
    );
}