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 相关文章推荐
PHP&amp;MYSQL服务器配置说明
Oct 09 PHP
php 一元分词算法
Nov 30 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 PHP
PHP whois查询类定义与用法示例
Apr 03 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手册及PHP编程标准
2006/12/17 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP递归创建多级目录
2015/11/05 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
PyTorch基本数据类型(一)
2019/05/22 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
装修五一活动策划案
2014/01/23 职场文书
商超业务员岗位职责
2014/03/12 职场文书
大学生交通专业求职信
2014/09/01 职场文书
迟到检讨书
2015/01/26 职场文书
邀请书格式范文
2015/02/02 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
校长师德表现自我评价
2015/03/05 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
初中政治教师教学反思
2016/02/23 职场文书