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 相关文章推荐
Mysql的常用命令
Oct 09 PHP
用PHP实现图象锐化代码
Jun 14 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
php 发送带附件邮件示例
Jan 23 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP自定义错误处理的方法分析
Dec 19 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 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插件 HTMLPurifier HTML解析器
2013/07/01 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
javascript实现数独解法
2015/03/14 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
tensorflow输出权重值和偏差的方法
2018/02/10 Python
TensorFlow实现模型评估
2018/09/07 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
django修改models重建数据库的操作
2020/03/31 Python
python如何调用百度识图api
2020/09/29 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
优秀教师获奖感言
2014/01/31 职场文书
授权委托书样本
2014/04/03 职场文书
2015元旦标语横幅
2014/12/09 职场文书
小学重阳节活动总结
2015/03/24 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
电影红河谷观后感
2015/06/11 职场文书
深入浅析Django MTV模式
2021/09/04 Python
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫