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程序设计有所帮助。

相关文章

  • 解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题

    解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题

    今天小编就为大家分享一篇解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php设计模式之工厂方法模式分析【星际争霸游戏案例】

    php设计模式之工厂方法模式分析【星际争霸游戏案例】

    这篇文章主要介绍了php设计模式之工厂方法模式,结合具体星际争霸游戏案例形式分析了PHP工厂方法模式的相关原理、使用方法及操作注意事项,需要的朋友可以参考下
    2020-01-01
  • 简单谈谈PHP面向对象之标识对象

    简单谈谈PHP面向对象之标识对象

    下面小编就为大家带来一篇简单谈谈PHP面向对象之标识对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • thinkPHP5分页功能实现方法分析

    thinkPHP5分页功能实现方法分析

    这篇文章主要介绍了thinkPHP5分页功能实现方法,结合实例形式较为详细的分析了thinkPHP5实现分页功能的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • Yii2框架中日志的使用方法分析

    Yii2框架中日志的使用方法分析

    这篇文章主要介绍了Yii2框架中日志的使用方法,对比Yii1.x分析Yii2日志操作的常用方法与相关使用技巧,需要的朋友可以参考下
    2017-05-05
  • YII2框架自定义全局函数的实现方法小结

    YII2框架自定义全局函数的实现方法小结

    这篇文章主要介绍了YII2框架自定义全局函数的实现方法,总结分析了YII2框架自定义全局函数相关实现技巧与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • php+laravel依赖注入知识点总结

    php+laravel依赖注入知识点总结

    在本篇文章里小编给大家整理的是关于php+laravel依赖注入知识点内容,需要的朋友们学习下。
    2019-11-11
  • 使用 PHPStorm 开发 Laravel

    使用 PHPStorm 开发 Laravel

    现在 PHPstorm已经是一个神器界别的IDE了,但是在用 laravel 开发的时候,alise的类名总是会有波浪线。 有一个 phpstorm 的插件,但是貌似只支持badle的模板。
    2015-03-03
  • Laravel构建即时应用的一种实现方法详解

    Laravel构建即时应用的一种实现方法详解

    这篇文章主要给大家介绍了关于Laravel构建即时应用的一种实现方法,即时通讯在我们日常的开发中经常会遇到,本文通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-08-08
  • php删除数组元素示例分享

    php删除数组元素示例分享

    这篇文章主要介绍了php删除数组元素示例,需要的朋友可以参考下
    2014-02-02

最新评论