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)
Sep 04 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
解析php类的注册与自动加载
Jul 05 PHP
php中session退出登陆问题
Feb 27 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
Jul 01 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
试用php中oci8扩展
Jun 18 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
PHP程序员的技术成长规划
Mar 25 PHP
php时间函数用法分析
May 28 PHP
PHP实现打包下载文件的方法示例
Oct 07 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
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
python实现随机漫步算法
2018/08/27 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
python将list转为matrix的方法
2018/12/12 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
优秀毕业生自荐信范文
2014/01/01 职场文书
元旦联欢会感言
2014/03/04 职场文书
五分钟演讲稿
2014/04/30 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
离婚被告答辩状
2015/05/22 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js