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安全配置
Dec 06 PHP
php时间不正确的解决方法
Apr 09 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
php获取文件内容最后一行示例
Jan 09 PHP
小谈php正则提取图片地址
Mar 27 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 PHP
php头像上传预览实例代码
May 02 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
php中数组最简单的使用方法
Dec 27 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
DC动漫人物排行
2020/03/03 欧美动漫
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
JS身份证信息验证正则表达式
2017/06/12 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
Python文件与文件夹常见基本操作总结
2016/09/19 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
python接口自动化框架实战
2020/12/23 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
Android面试题及答案
2015/09/04 面试题
XML文档面试题
2015/08/05 面试题
中学生学习保证书
2015/02/26 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
Pygame Time时间控制的具体使用详解
2021/11/17 Python