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

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;
}

参考:http://www.yiiframework.com/wiki/95/saving-files-to-a-blob-field-in-the-database/

如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

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

    你需要在模型(Model)中定义一个属性来接收上传的头像文件,并在规则(Rules)中设定允许的文件类型和大小限制。 2. **图片处理**:上传后的图片可能需要进行裁剪、缩放等操作以适应不同的展示场景。你可以使用Yii...

    Yii 2文件下载

    压缩包子文件的文件名称列表只给出了一项:"yii2-2.0.0",这很可能是指Yii 2.0的第一个稳定版本。通常,这个版本会包含框架的核心库、基础结构、以及用于快速启动新项目的命令行工具(如`yiic`)。安装包可能包括...

    Yii配置文件用法详解

    组件('components')是Yii配置文件中非常重要的一个部分,它定义了应用的主要功能组件。在示例中,数据库组件('db')详细指定了数据库连接字符串、用户名、密码、字符集和表前缀等参数。另外,还启用了参数的日志...

    YII配置详解以及开发规范

    Yii 框架详解与开发规范 Yii 是一款高效的 PHP 框架,适用于构建大型 Web 应用,包括门户、论坛、内容管理系统(CMS)和电子商务平台等高流量项目。其基于 Model-View-Controller(MVC)设计模式,强调可重用性和...

    yii2 文件上传笔记

    yii2 文件上传笔记

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

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

    Yii框架详解

    Yii框架详解 Yii,全称为“Yet Another Inevitable Framework”,是PHP开发的一款高性能的、基于组件的Web应用开发框架。Yii的设计理念是简洁、高效和可扩展,它旨在提高开发速度并降低维护成本。本篇文章将深入...

    yii导出html文件

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

    YII 配置文件,不同的环境不同的配置

    标题提到的“YII 配置文件,不同的环境不同的配置”是一个关键的概念,它涉及到如何根据不同的部署环境(如开发环境、测试环境和生产环境)来定制框架的行为。 在Yii框架中,配置文件主要用于设定应用的运行时参数...

    yii2 图片上传扩展插件

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

    Yii 2.0.9 advanced zip

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

    yii2 basic 文件

    Yii2 Basic的另一个优点是其强大的缓存机制,可以使用文件、数据库或APC等不同方式缓存数据,以提高应用性能。还有,Yii2的Gii代码生成工具可以帮助快速生成模型、控制器和视图的初始代码,减少手动编写的工作量。 ...

    yii2-avatar-generator:Yii2头像生成器

    头像生成器通过用户的名字,文件或url为Yii2生成头像。特征通过用户名生成头像从文件或网址生成头像(仅适用于http) 通过用户名自动选择背景颜色文字的对比色字体和大小自定义背景纹理(2现在可用)依存关系...

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

    为了更好地管理和跟踪这些变更,YII 2框架提供了一个非常实用的功能——数据库迁移(Migrations)。数据库迁移可以帮助开发者在不影响现有数据的情况下,对数据库结构进行更改。 #### 二、YII 2数据库迁移的基本操作 ...

    yii框架yii框架yii框架yii框架yii框架

    很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架

    yii-basic-app-2.0.5.tgz

    Yii2框架的基本版(Basic App)是一个适合小型项目或者学习框架的简单启动模板,包括了基本的目录结构、配置文件、数据库迁移工具以及基本的前端和后端控制器。这个版本的更新意味着即使是初学者或小型项目也应该...

    yii2.0框架实现上传excel文件后导入到数据库的方法示例

    首先,我们需要创建一个用于上传Excel文件的模型类uploadForm,该模型类继承自yii\db\ActiveRecord。在这个类中,我们定义了一个名为$file的公共属性,用于存储上传的文件。为了确保上传的文件是Excel文件,我们在...

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

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

Global site tag (gtag.js) - Google Analytics