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中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
10 个经典PHP函数
Oct 17 PHP
php不写闭合标签的好处
Mar 04 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 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
php getsiteurl()函数
2009/09/05 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
微信小程序自定义胶囊样式
2020/12/27 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
python 获取网页编码方式实现代码
2017/03/11 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
使用python绘制温度变化雷达图
2019/10/18 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
学习张林森心得体会
2014/09/10 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
公务员考察材料
2014/12/23 职场文书
黄山导游词
2015/01/31 职场文书
升学宴学生致辞
2015/07/27 职场文书