热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP开发框架YiiFramework教程(15)UI组件MultiFileUpload示例

PHP开发框架YiiFramework教程(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如下:

    
beginWidget('CActiveForm',array(    
        
    'method' =>'post',    
    'htmlOptions'=>array('enctype'=>'multipart/form-data'),    
        
    )); ?>    
        
   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),    
   )); ?>    
        
   
    
            
   
    
        
endWidget(); ?>    
    
        
        
    findFiles() as $filename): ?>    
       
  •             Yii::app()->baseUrl.'/'.Yii::app()->params['uploadDir'].$filename,    
        array('rel'=>'external'));?>
  •     
        

使用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目录下的文件,然后将上传的文件存放到该目录下。

PHP开发框架Yii Framework教程(15) UI 组件 MultiFileUpload示例



推荐阅读
  • 本文详细介绍了如何使用jQuery防止事件冒泡,确保子元素的点击事件不会触发父元素或祖先元素的相应事件。通过具体的代码示例和解释,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文讨论了如何根据特定条件动态显示或隐藏文件上传控件中的默认文本(如“未选择文件”)。通过结合CSS和JavaScript,可以实现更灵活的用户界面。 ... [详细]
  • 本文介绍了一段使用jQuery实现的用户注册页面表单验证代码,适用于前端开发人员学习和参考。该示例结合了HTML、CSS和JavaScript,确保用户输入的数据格式正确。 ... [详细]
  • 在PHP后端开发中遇到一个难题:通过第三方类文件发送短信功能返回的JSON字符串无法解析。本文将探讨可能的原因并提供解决方案。 ... [详细]
  • 优化网页加载速度:JavaScript 实现图片延迟加载
    本文介绍如何使用 JavaScript 实现图片延迟加载,从而显著提升网页的加载速度和用户体验。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • LeetCode 540:有序数组中的唯一元素
    来源:力扣(LeetCode),链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array。题目要求在仅包含整数的有序数组中,找到唯一出现一次的元素,并确保算法的时间复杂度为 O(log n) 和空间复杂度为 O(1)。 ... [详细]
  • 如何在Faceu激萌中设置和使用妆容切换特效?
    本文将详细介绍如何在Faceu激萌应用中设置和使用妆容切换特效,帮助用户轻松实现创意拍摄。无论是新手还是有经验的用户,都能从中受益。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 小红书提高MCN机构入驻门槛,需缴纳20万元保证金
    近期,小红书对MCN机构的入驻要求进行了调整,明确要求MCN机构在入驻时需缴纳20万元人民币的保证金。此举旨在进一步规范平台内容生态,确保社区的真实性和用户体验。 ... [详细]
author-avatar
倾城修罗__598
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有