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获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
php 动态添加记录
Mar 10 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
Apr 25 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 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连接oracle数据库的方法(测试成功)
2016/05/26 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python实现图片压缩代码实例
2019/08/12 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
公司培训欢迎词
2014/01/10 职场文书
培训班主持词
2014/03/28 职场文书
超市店庆活动方案
2014/08/31 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
nginx配置指令之server_name的具体使用
2022/08/14 Servers