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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
php中动态调用函数的方法
Mar 16 PHP
PHP经典面试题集锦
Mar 19 PHP
PHP的Yii框架中Model模型的学习教程
Mar 29 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
laravel自定义分页效果
Jul 23 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 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
漂亮但不安全的CTB
2006/10/09 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JS实现图片切换特效
2019/12/23 Javascript
js实现扫雷源代码
2020/11/27 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
python求质数的3种方法
2018/09/28 Python
Python实现登陆文件验证方法
2018/10/06 Python
用python实现刷点击率的示例代码
2019/02/21 Python
如何清空python的变量
2020/07/05 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
影视动画专业个人的自我评价
2013/12/31 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
第一军规观后感
2015/06/12 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
2016年教代会开幕词
2016/03/04 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏