CMultiFileUpload 用於上傳文件,支持一次同時上傳多個文件。這個UI組件是基於jQuery Multi File Upload 插件。Yii 內置的很多UI組件都是基於JQuery,因此需要創建assets 目錄用於存放動態生成的javascripts 等。
所上傳的文件的信 息可以通過$_FILES[widget-name]來訪問,比如,CMultiFileUpload的name為”files” 所上傳的文件信息可以通過$_FILES ['files']來訪問。此外包含CMultiFileUpload的Form屬性需要設置enctype=multipart/form-data。
本例創建 一個upload目錄用於存放上傳的文件。我們通過配置文件設置中個上傳文件導入目錄。
修改/config/main.php 添加項目 代碼
// application-level parameters that can be accessed // using Yii::app()->params['paramName'] 'params'=>require(dirname(__FILE__).'/params.php'),
為Application添加一些參數,存放參數的文件為 config/param.php
定義上傳文件的目錄如下:
// this contains the application parameters that can be
maintained via GUI
return array(
//upload directory
'uploadDir' => 'upload/',
);
在代碼中可以通過Yii::app()->params['uploadDir'] 來訪問這個參數,對於這個簡單的例子,你也可 以直接使用upload/ 做為固定的常量而無需定義Application的參數params.
本例不需使用Model,我們定義View如下:
<center class="form">
<?php $form=$this->beginWidget('CActiveForm',array(
'method' =>'post',
'htmlOptions'=>array('enctype'=>'multipart/form-data'),
)); ?>
<?php $this->widget('CMultiFileUpload',array(
'name'=>'files',
'accept'=>'jpg|png',
'max'=>3,
'remove'=>'Remove',
//'denied'=>'', message that is displayed when a file type is not allowed
//'duplicate'=>'', message that is displayed when a file appears twice
'htmlOptions'=>array('size'=>25),
)); ?>
<center class="row submit">
<?php echo CHtml::submitButton('Upload'); ?>
</center>
<?php $this->endWidget(); ?>
</center><!-- form -->
<ul>
<?php foreach($this->findFiles() as $filename): ?>
<li><?php echo CHtml::link($filename,
Yii::app()->baseUrl.'/'.Yii::app()->params['uploadDir'].$filename,
array('rel'=>'external'));?></li>
<?php endforeach; ?>
</ul>