Yii框架上传图片用法总结


Posted in PHP onMarch 28, 2016

本文实例讲述了Yii框架上传图片用法。分享给大家供大家参考,具体如下:

Yii 提供了 CUploadedFile 来上传文件,比如图片,或者文档。

官方关于这个类的介绍 :

CUploadedFile represents the information for an uploaded file.
Call getInstance to retrieve the instance of an uploaded file, and then use saveAs to save it on the server. You may also query other information about the file, including name, tempName, type, size and error.
public properties

Property Type Description Defined By
error integer Returns an error code describing the status of this file uploading. CUploadedFile
extensionName string the file extension name for name. CUploadedFile
hasError boolean whether there is an error with the uploaded file. CUploadedFile
name string the original name of the file being uploaded CUploadedFile
size integer the actual size of the uploaded file in bytes CUploadedFile
tempName string the path of the uploaded file on the server. CUploadedFile
type string the MIME-type of the uploaded file (such as "image/gif"). CUploadedFile
实现上传文件,要用到MVC三个层面。

1、 模型层面 M ,把一个字段在rules方法里设置为 file 属性。

array('url',
    'file',  //定义为file类型
    'allowEmpty'=>true,
    'types'=>'jpg,png,gif,doc,docx,pdf,xls,xlsx,zip,rar,ppt,pptx',  //上传文件的类型
    'maxSize'=>1024*1024*10,  //上传大小限制,注意不是php.ini中的上传文件大小
    'tooLarge'=>'文件大于10M,上传失败!请上传小于10M的文件!'
),

2、视图层View,这里需要用到CHtml::activeFileField 来生成选择文件的button,注意是上传文件,所以在该标单中enctype应该设置为: multupart/form-data

<?php $form=$this->beginWidget('CActiveForm', array(
<span style="white-space:pre"> </span>'id'=>'link-form',
<span style="white-space:pre"> </span>'enableAjaxValidation'=>false,
<span style="white-space:pre"> </span>'htmlOptions' => array('enctype'=>'multipart/form-data'),
)); ?>
<div class="row">
    <?php echo $form->labelEx($model,'url'); ?>
    <?php echo CHtml::activeFileField($model,'url'); ?>
    <?php echo $form->error($model,'url'); ?>
</div>

3、控制层 C

$model=new Link;
if(isset($_POST['Link']))
{
  $model->attributes=$_POST['Link'];
  if(empty($_POST['Link']['name'])){
    $model->name = $model->url;
  }
  $file = CUploadedFile::getInstance($model,'url');
  //获得一个CUploadedFile的实例
  if(is_object($file)&&get_class($file) === 'CUploadedFile'){
  // 判断实例化是否成功
    $model->url = './assets/upfile/file_'.time().'_'.rand(0,9999).'.'.$file->extensionName;  //定义文件保存的名称
  }else{
    $model->url = './assets/upfile/noPic.jpg';
    // 若果失败则应该是什么图片
  }
  if($model->save()){
    if(is_object($file)&&get_class($file) === 'CUploadedFile'){
      $file->saveAs($model->url); // 上传图片
    }
    $this->redirect(array('view','id'=>$model->lid));
  }
}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
建立文件交换功能的脚本(三)
Oct 09 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
Yii开启片段缓存的方法
Mar 28 #PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 #PHP
CI映射(加载)数据到view层的方法
Mar 28 #PHP
CI配置多数据库访问的方法
Mar 28 #PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 #PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 #PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 #PHP
You might like
一段php加密解密的代码
2006/10/09 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
使用PHP开发留言板功能
2019/11/19 PHP
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python字符串处理函数简明总结
2015/04/13 Python
Python版微信红包分配算法
2015/05/04 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
面向对象设计的原则是什么
2013/02/13 面试题
玩具公司的创业计划书
2013/12/31 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
2015年资料员工作总结
2015/04/25 职场文书
通知格式
2015/04/27 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
JavaScript 原型与原型链详情
2021/11/02 Javascript
Python内置的数据类型及使用方法
2022/04/13 Python