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中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
PHP文件操作详解
Dec 30 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
关于php循环跳出的问题
2013/07/01 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
python求解数组中两个字符串的最小距离
2018/09/27 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
python TCP包注入方式
2020/05/05 Python
校领导推荐信
2013/11/01 职场文书
共产党员承诺书
2014/03/25 职场文书
借款协议书
2014/04/12 职场文书
红白喜事主持词
2015/07/06 职场文书
通讯稿范文
2015/07/22 职场文书
Python制作春联的示例代码
2022/01/22 Python
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android