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安全配置
Oct 09 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
php实现读取内存顺序号
Mar 29 PHP
php操作access数据库的方法详解
Feb 22 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
php和asp语法上的区别总结
May 12 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
PHP进程通信基础之信号
2017/02/19 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
Python编程之变量赋值操作实例分析
2017/07/24 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
python实现计算器简易版
2020/12/17 Python
用python批量移动文件
2021/01/14 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
销售职业生涯规划范文
2014/03/14 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server
python区块链实现简版工作量证明
2022/05/25 Python