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 相关文章推荐
php5 and xml示例
Nov 22 PHP
php 删除cookie和浏览器重定向
Mar 16 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
php下载文件的代码示例
Jun 29 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
简单谈谈favicon
Jun 10 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
php 常用的系统函数
Feb 07 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 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之第四天
2006/10/09 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
python比较两个列表是否相等的方法
2015/07/28 Python
python 内置函数filter
2017/06/01 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
广播体操口号
2014/06/18 职场文书
节能环保演讲稿
2014/08/28 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
运动会通讯稿300字
2015/07/20 职场文书
毕业欢送会致辞
2015/07/29 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书