Yii框架上传图片用法总结

 更新时间:2016年03月28日 12:13:11   作者:汪小熊  
这篇文章主要介绍了Yii框架上传图片用法,结合实例形式总结分析了Yii框架上传图片的相关注意事项与使用技巧,需要的朋友可以参考下

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

相关文章

  • PHP使用curl制作简易百度搜索

    PHP使用curl制作简易百度搜索

    这篇文章主要为大家详细介绍了PHP使用curl制作简易百度搜索的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 调用WordPress函数统计文章访问量及PHP原生计数器的实现

    调用WordPress函数统计文章访问量及PHP原生计数器的实现

    这篇文章主要介绍了调用WordPress函数统计文章访问量及PHP原生计数器的实现,文中作者也提到了WordPress中的两款插件不过出于性能考虑并不推荐插件方式的实现,需要的朋友可以参考下
    2016-03-03
  • PHPCMS忘记后台密码的解决办法

    PHPCMS忘记后台密码的解决办法

    PHPCMS是一款网站管理软件,PHPCMS后台密码忘记解决办法,本文主要是从技术角度去解决的,请细看正文
    2016-10-10
  • Yii数据库缓存实例分析

    Yii数据库缓存实例分析

    这篇文章主要介绍了Yii数据库缓存用法,结合实例形式分析了Yii数据库缓存的使用步骤与相关实现代码,需要的朋友可以参考下
    2016-03-03
  • CI框架中类的自动加载问题分析

    CI框架中类的自动加载问题分析

    这篇文章主要介绍了CI框架中类的自动加载问题,结合实例形式分析了CI框架中类的自动加载功能与具体操作技巧,需要的朋友可以参考下
    2016-11-11
  • 服务器端解压缩zip的脚本

    服务器端解压缩zip的脚本

    服务器端解压缩zip的脚本...
    2006-12-12
  • php curl模拟post提交数据示例

    php curl模拟post提交数据示例

    本文主要介绍了php curl模拟post提交数据的方法,大家参考使用吧
    2013-12-12
  • php使用json_encode对变量json编码

    php使用json_encode对变量json编码

    这篇文章主要是说明 json_encode 使用时一个需要注意的细节,无论返回的是数组还是 json,都不代表这一定就是个错误的返回结果,当前端需要的数组时,数组就是正确的结果,反之亦然
    2014-04-04
  • Laravel 5框架学习之Eloquent 关系

    Laravel 5框架学习之Eloquent 关系

    Eloquent是Laravel的原始ActiveRecord是实现的,建立在Laravel的Fluent Query Builder之上的,所以Eloquent类和Fluent类是一样的,能实现复杂的SQL语句和非常直观表达出的表与表之间的关系
    2015-04-04
  • laravel使用组件实现微信网页授权登入

    laravel使用组件实现微信网页授权登入

    这篇文章主要介绍了laravel使用组件实现微信网页授权登入,使用laravel组件 laravel-wechat调用,使用起来很方便,有需要的同学可以学习下
    2021-03-03

最新评论