- 1 第一个应用 Hello World
- 2 Yii Web 应用基础
- 3 为应用添加日志
- 4 Hangman 猜单词游戏实例
- 5 URL 管理
- 6 CComponent 组件
- 7 使用 CHtml 创建 Form
- 8 使用 FormModel
- 9 UI 组件 Widget 概述
- 10 UI 组件 自定义组件
- 11 UI 组件 ActiveForm 示例
- 12 UI 组件 ClipWidget 示例
- 13 UI 组件 ContentDecorator 示例
- 14 UI 组件 MaskedTextField 示例
- 15 UI 组件 MultiFileUpload 示例
- 16 UI 组件 StarRating 示例
- 17 UI 组件 TabView 示例
- 18 UI 组件 TextHighlighter 示例
- 19 UI 组件 TreeView 示例
- 20 UI 组件 Captcha 示例
- 21 UI 组件 自定义 Captcha 示例
- 22 UI 组件 Zii 组件简介
- 23 数据库-概述
- 24 数据库-DAO 示例
- 25 数据库-Query Builder 示例
- 26 数据库-Active Record 示例
- 27 数据库-关联 Active Record 示例
- 28 Data Provider 简介
- 29 Zii 组件-Menu 示例
- 30 Zii 组件-ListView 示例
- 31 Zii 组件-DetailView 示例
- 32 Zii 组件-GridView 示例
- 33 Zii 组件-Accordion 示例
- 34 Zii 组件-AutoComplete 示例
- 35 Zii 组件-Button 示例
- 36 Zii 组件-DatePicker 示例
- 37 Zii 组件-Dialog 示例
- 38 Zii 组件-ProgressBar 示例
- 39 Zii 组件-Slider 示例
- 40 Zii 组件-SliderInput 示例
- 41 Zii 组件-Tabs 示例
- 42 Zii 组件-Draggable 示例
- 43 Zii 组件-Droppable 示例
- 44 Zii 组件-Resizable 示例
- 45 Zii 组件-Selectable 示例
- 46 Zii 组件-Sortable 示例
- 47 主题 Theme 示例
- 48 多国语言示例
15 UI 组件 MultiFileUpload 示例
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 如下:
<div 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), )); ?> <div class="row submit"> <?php echo CHtml::submitButton('Upload'); ?> </div> <?php $this->endWidget(); ?> </div><!-- 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>
使用 CMultiFileUpload 上传扩展名为 jpg|png 的文件,CMultiFileUpload 可以通过配置定义一些选项,具体可以 参考
修改其对应的 Controller/Action。
class SiteController extends CController { /** * Index action is the default action in a controller. */ public function actionIndex() { if(isset($_FILES['files'])) { // delete old files foreach($this->findFiles() as $filename) unlink(Yii::app()->params['uploadDir'].$filename); //upload new files foreach($_FILES['files']['name'] as $key=>$filename) move_uploaded_file($_FILES['files']['tmp_name'][$key], Yii::app()->params['uploadDir'].$filename); } $this->render('index'); } /** * @return array filename */ public function findFiles() { return array_diff(scandir(Yii::app()->params['uploadDir']), array('.', '..')); } }
Action 方法首先删除 upload 目录下的文件,然后将上传的文件存放到该目录下。
图片 15.1 picture15.1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论