yii框架提供了activeFileField控件来完成上传文件(当然也包括了上传图片)的操作
1、函数原型:
public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array ());
2、调用例子:
(1)首先,设置form,这一步一 定要做,把form设置为’multipart/form-data’,具体请看我的:
<?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'user-form', 'enableAjaxValidation'=>false, 'htmlOptions'=>array('enctype'=>'multipart/form-data'), )); ?>
注:id的作用。
(2) 接着,在view下的form里设置:
<div class="row"> <?php echo $form->labelEx($model,'avatar'); ?> <?php echo CHtml::activeFileField($model,'avatar'); ?> <?php echo $form->error($model,'avatar'); ?> </div>
最后,加上提交按钮,
<div class="row buttons"> <?php echo CHtml::submitButton($model->isNewRecord ? '立即创建' : '保存修改'); ?> </div> <?php $this->endWidget(); ?>
(3) 如果你想预览图片,那么请注意了,可以加上这么一段:
<div class="row"> <?php echo '图片预览'; ?> <?php echo '<img src="http://localhost/../'.$model->avatar.'" style="width:200px; height:300px;" />'; ?> </div>
(4)最后,需要在控制类里加上下面的:
$image = CUploadedFile::getInstance($model, 'avatar'); if( is_object($image) && get_class($image) === 'CUploadedFile' ){ $model->avatar = '自己设置的文件名'.'.jpg'; }else{ $model->avatar = 'NoPic.jpg'; } if( $model->save() ){ if(is_object($image) && get_class($image) === 'CUploadedFile'){ $image->saveAs(Yii::app()->basePath.'/../uploads/'.$model->avatar); } $this->redirect(array('view','id'=>$model->userId)); }
注:问了方便文件管理,建议这样使用 $image->saveAs(‘./assets/upload/’.$imageName) ,保证assets目录下存在upload目录
版本二:
public function beforeSave() { if($file=CUploadedFile::getInstance($this,'uploadedFile')) { $this->file_name=$file->name; $this->file_type=$file->type; $this->file_size=$file->size; $this->file_content=file_get_contents($file->tempName); } return parent::beforeSave(); }
(5)限制上传的文件必须是图片,还有限制图片大小,那么请到model层里的rules新增这么一句:
array('avatar', 'file', 'allowEmpty'=>true, 'types'=>'jpg,gif,png', 'maxSize'=>1024 * 1024 * 1, 'tooLarge'=>'头像最大不超过1MB,请重新上传!', ),
(6) 显示图片时,在view目录中,使用CHtm::image()函数
CHtml::image($model->product_imgage,//保存图片的名称,只要文件名正确 ,yii默认帮你查找图片
‘产品图片’, alt属性,放在页面显示的该名称
array(‘width’=>250,’height’=>120)); 设置图片大小
注:参考 http://www.9ihl.com/archives/312
(二)展示及下载
1,展示
<? echo CHtml::link(my_link_name,array('displaySavedImage','id'=>$model->primaryKey)); ?>
2,下载
public function actionDisplaySavedImage() { $model=$this->loadModel($_GET['id']); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Transfer-Encoding: binary'); header('Content-length: '.$model->file_size); header('Content-Type: '.$model->file_type); header('Content-Disposition: attachment; filename='.$model->file_name); echo $model->file_content; }
相关推荐
从标签"Yii 2.0"我们可以确认,这个压缩包的内容与Yii框架的第二个主要版本有关。 压缩包子文件的文件名称列表只给出了一项:"yii2-2.0.0",这很可能是指Yii 2.0的第一个稳定版本。通常,这个版本会包含框架的核心...
yii导出html文件,或者导出text文件,超简洁。纯手打请高评谢谢
### Yii2.0中文学习手册知识点总结 #### 一、简介 - **Yii2.0**是一款基于PHP的高性能Web应用程序开发框架,以其简洁、高效、安全的特点深受开发者喜爱。本手册旨在帮助初学者和进阶用户快速掌握Yii2.0的核心概念与...
Yii框架是高效且灵活的PHP框架,专为Web 2.0应用开发而设计。自2008年1月薛强开始开发以来,Yii已经经历了多个版本迭代,从1.0.0到...通过深入学习和实践,开发者可以充分利用Yii的优势,提高开发效率和应用质量。
yii2学习笔记,一边看某课网一遍实践一遍总结,整理文档
Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂
本篇学习笔记将详细介绍Yii框架的基本概念,包括请求处理流程、组件、事件与行为、错误和日志处理、国际化以及视图和控制台应用等方面。 ### 请求的处理流程 1. **项目入口脚本**:在Yii框架中,项目的入口脚本...
Yii2.0学习笔记完全版 Yii2 Yii2.0 Yii2.0学习 Yii2.0学习笔记
yii2 文件上传笔记
在 Yii2 中,处理文件上传是常见的需求,尤其是图片上传,它能够为用户界面增添动态性和互动性。"yii2 图片上传扩展插件"就是为了简化这一过程而设计的。 该插件主要解决以下问题: 1. **图片预览**:允许用户在上...
### YII 2数据库迁移(Migrations) 使用教程 #### 一、数据库迁移概念与作用 在软件开发过程中,随着项目的推进和技术需求的变化,数据库结构往往也需要进行调整或更新。为了更好地管理和跟踪这些变更,YII 2框架...
1. **文件上传处理**:Yii2框架内置了文件上传组件,可以方便地处理文件上传。你需要在模型(Model)中定义一个属性来接收上传的头像文件,并在规则(Rules)中设定允许的文件类型和大小限制。 2. **图片处理**:...
总的来说,Yii 2.0.9 advanced zip 文件很可能是包含了一个完整的Yii 2.0.9 advanced项目模板,用户可以下载后在Linux环境中解压并转换为zip,然后在Windows环境下使用,以快速搭建起一个分层的Web应用框架。...
yii2-upload-behavior, ActiveRecord的Yii2文件/图像上传行为 Yii2文件/图像上传行为这个包是两种类似行为的集合。 第一个允许你将上传的文件保留为。 第二个允许你为上传的图片生成缩略图。 可以为不同的属性多次...
8. 社区支持:Yii拥有活跃的社区和大量的第三方扩展,开发者可以通过社区获得帮助和丰富的插件资源。 安装Yii框架的过程相对简单,通常包括以下步骤: 1. 从官方网站下载Yii框架压缩包。 2. 将压缩包解压至Web...
Yii框架是PHP开发中的一个高性能、基于组件的MVC(模型-视图-控制器)框架,特别适合开发大型Web应用。...通过深入研究源码,开发者不仅可以提升Yii框架的掌握程度,还能学习到电子商务系统的设计和实现技巧。
“yii框架中文手册教程.pdf”是Yii框架的中文版官方手册,它是学习Yii框架的重要资源。这份PDF文档通常会包括以下内容: 1. **安装与配置**:介绍如何在服务器上安装Yii,以及设置基本的项目环境。 2. **快速入门**...
Yii2 后台系统可能会使用 `yii\webUploadedFile` 类来处理文件上传,配合 `yii\imagine` 扩展进行图片处理,如裁剪、缩放等,确保头像符合预设尺寸。此外,文件存储可以本地化,也可以使用云存储服务如 AWS S3 或...
Yii提供了一种方便的方式来处理文件上传,包括图片。`CUploadedFile`类是Yii中处理文件上传的核心,它可以从HTTP请求中获取上传文件的信息。你需要创建一个表单,包含一个`enctype="multipart/form-data"`的`<form>`...