Yii Framework 开发教程(15) UI 组件 MultiFileUpload示例
来源:互联网 发布:华丽上班族电影知乎 编辑:程序博客网 时间:2024/06/02 11:45
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目录下的文件,然后将上传的文件存放到该目录下。
本例下载
- Yii Framework 开发教程(15) UI 组件 MultiFileUpload示例
- Yii Framework 开发教程(15) UI 组件 MultiFileUpload示例
- Yii Framework 开发教程(11) UI 组件 ActiveForm示例
- Yii Framework 开发教程(12) UI 组件 ClipWidget示例
- Yii Framework 开发教程(13) UI 组件 ContentDecorator示例
- Yii Framework 开发教程(14) UI 组件 MaskedTextField示例
- Yii Framework 开发教程(16) UI 组件 StarRating示例
- Yii Framework 开发教程(17) UI 组件 TabView示例
- Yii Framework 开发教程(18) UI 组件 TextHighlighter示例
- Yii Framework 开发教程(19) UI 组件 TreeView示例
- Yii Framework 开发教程(20) UI 组件 Captcha示例
- Yii Framework 开发教程(21) UI 组件 自定义Captcha示例
- Yii Framework 开发教程(11) UI 组件 ActiveForm示例
- Yii Framework 开发教程(12) UI 组件 ClipWidget示例
- Yii Framework 开发教程(13) UI 组件 ContentDecorator示例
- Yii Framework 开发教程(14) UI 组件 MaskedTextField示例
- Yii Framework 开发教程(16) UI 组件 StarRating示例
- Yii Framework 开发教程(17) UI 组件 TabView示例
- 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
- Yii Framework 开发教程(13) UI 组件 ContentDecorator示例
- IOS 发送邮件
- Yii Framework 开发教程(14) UI 组件 MaskedTextField示例
- IOS学习笔记——UITableView(一)
- Yii Framework 开发教程(15) UI 组件 MultiFileUpload示例
- SQL经典18题(不知道经不经典)
- i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例
- Yii Framework 开发教程(16) UI 组件 StarRating示例
- svn: Server sent unexpected return value (403 Forbidden) in response to CHECKOUT request for-解决方法
- 怎样提高WebService性能(大数据量网络传输处理)
- 小波变换 完美通俗解读【转载】
- 网络视频监控P2P解决方案
- Vector作为返回值时出现的问题