`
dcj3sjt126com
  • 浏览: 1871722 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

YII学习第十八天,文件上传相关

    博客分类:
  • YII
阅读更多

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文件下载

    从标签"Yii 2.0"我们可以确认,这个压缩包的内容与Yii框架的第二个主要版本有关。 压缩包子文件的文件名称列表只给出了一项:"yii2-2.0.0",这很可能是指Yii 2.0的第一个稳定版本。通常,这个版本会包含框架的核心...

    yii导出html文件

    yii导出html文件,或者导出text文件,超简洁。纯手打请高评谢谢

    Yii2.0中文学习手册

    ### Yii2.0中文学习手册知识点总结 #### 一、简介 - **Yii2.0**是一款基于PHP的高性能Web应用程序开发框架,以其简洁、高效、安全的特点深受开发者喜爱。本手册旨在帮助初学者和进阶用户快速掌握Yii2.0的核心概念与...

    Yii框架学习笔记

    Yii框架是高效且灵活的PHP框架,专为Web 2.0应用开发而设计。自2008年1月薛强开始开发以来,Yii已经经历了多个版本迭代,从1.0.0到...通过深入学习和实践,开发者可以充分利用Yii的优势,提高开发效率和应用质量。

    Yii2—yii2学习—某课网学习笔记

    yii2学习笔记,一边看某课网一遍实践一遍总结,整理文档

    Yii框架学习手册

    Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂

    Yii框架学习笔记.pdf

    本篇学习笔记将详细介绍Yii框架的基本概念,包括请求处理流程、组件、事件与行为、错误和日志处理、国际化以及视图和控制台应用等方面。 ### 请求的处理流程 1. **项目入口脚本**:在Yii框架中,项目的入口脚本...

    Yii2.0学习笔记完全版

    Yii2.0学习笔记完全版 Yii2 Yii2.0 Yii2.0学习 Yii2.0学习笔记

    yii2 文件上传笔记

    yii2 文件上传笔记

    yii2 图片上传扩展插件

    在 Yii2 中,处理文件上传是常见的需求,尤其是图片上传,它能够为用户界面增添动态性和互动性。"yii2 图片上传扩展插件"就是为了简化这一过程而设计的。 该插件主要解决以下问题: 1. **图片预览**:允许用户在上...

    YII 2数据库迁移(Migrations) 使用教程

    ### YII 2数据库迁移(Migrations) 使用教程 #### 一、数据库迁移概念与作用 在软件开发过程中,随着项目的推进和技术需求的变化,数据库结构往往也需要进行调整或更新。为了更好地管理和跟踪这些变更,YII 2框架...

    yii2 头像上传 完整版 带cookie保存

    1. **文件上传处理**:Yii2框架内置了文件上传组件,可以方便地处理文件上传。你需要在模型(Model)中定义一个属性来接收上传的头像文件,并在规则(Rules)中设定允许的文件类型和大小限制。 2. **图片处理**:...

    Yii 2.0.9 advanced zip

    总的来说,Yii 2.0.9 advanced zip 文件很可能是包含了一个完整的Yii 2.0.9 advanced项目模板,用户可以下载后在Linux环境中解压并转换为zip,然后在Windows环境下使用,以快速搭建起一个分层的Web应用框架。...

    yii2-upload-behavior, ActiveRecord的Yii2文件/图像上传行为.zip

    yii2-upload-behavior, ActiveRecord的Yii2文件/图像上传行为 Yii2文件/图像上传行为这个包是两种类似行为的集合。 第一个允许你将上传的文件保留为。 第二个允许你为上传的图片生成缩略图。 可以为不同的属性多次...

    yii框架中文手册教程

    8. 社区支持:Yii拥有活跃的社区和大量的第三方扩展,开发者可以通过社区获得帮助和丰富的插件资源。 安装Yii框架的过程相对简单,通常包括以下步骤: 1. 从官方网站下载Yii框架压缩包。 2. 将压缩包解压至Web...

    PHP框架Yii商城源码,带数据库文件.rar

    Yii框架是PHP开发中的一个高性能、基于组件的MVC(模型-视图-控制器)框架,特别适合开发大型Web应用。...通过深入研究源码,开发者不仅可以提升Yii框架的掌握程度,还能学习到电子商务系统的设计和实现技巧。

    yii框架中文文档、yii中文手册教程

    “yii框架中文手册教程.pdf”是Yii框架的中文版官方手册,它是学习Yii框架的重要资源。这份PDF文档通常会包括以下内容: 1. **安装与配置**:介绍如何在服务器上安装Yii,以及设置基本的项目环境。 2. **快速入门**...

    yii2 通用后台系统

    Yii2 后台系统可能会使用 `yii\webUploadedFile` 类来处理文件上传,配合 `yii\imagine` 扩展进行图片处理,如裁剪、缩放等,确保头像符合预设尺寸。此外,文件存储可以本地化,也可以使用云存储服务如 AWS S3 或...

    Yii实现用户注册登录、ajax、图片上传、modules编程基础例程(内置完整工程及使用说明)

    Yii提供了一种方便的方式来处理文件上传,包括图片。`CUploadedFile`类是Yii中处理文件上传的核心,它可以从HTTP请求中获取上传文件的信息。你需要创建一个表单,包含一个`enctype="multipart/form-data"`的`&lt;form&gt;`...

Global site tag (gtag.js) - Google Analytics