yii实现图片上传及缩略图生成的方法


Posted in PHP onDecember 04, 2014

本文实例讲述了利用yii框架来实现图片上传功能并在上传成功之后自动生成缩略图的方法,分享给大家供大家参考。具体实现方法如下:

Action文件:

<?php

/**

 * TestController.php

 * Created on: 2014-1-26 12:59:36 by Outsider

 */

class TestController extends CController {

 

    /**

     * 缩略图片生成

     * @ path 图片路径

     * @ width 图片宽度

     * @ height 图片高度

     */

    public function actionGetThumb($path, $w, $h) {

        $file_name = md5($path . $w . $h);

        if (file_exists('./temp/' . $file_name . '.jpg')) {

            header('location:/temp/' . $file_name . '.jpg');

            Yii::app()->end();

        }

        Yii::import("ext.EPhpThumb.EPhpThumb");

        $thumb = new EPhpThumb();

        $thumb->init();

        $thumb->create('.' . $path)

                ->adaptiveResize($w, $h)

                ->save('./temp/' . $file_name . '.jpg')

                ->show();

    }

 

    /*

     * 图片显示

     */

 

    public function actionList() {

        $attache = Attache::model();

        $list = $attache->findAll();

        $this->render('list', array('list' => $list));

        die;

    }

 

    /**

     * 文件上传

     */

    public function actionIndex() {

        $path = getcwd() . 'uploads';

        $dir = DIRECTORY_SEPARATOR . date('Y') . DIRECTORY_SEPARATOR . date('m');

        $dir = str_replace("\", "/", $dir);

        $uploads_dir = str_replace("\", "/", $path . $dir);

        if (!is_dir($uploads_dir) || !is_writeable($uploads_dir)) {

            mkdir($uploads_dir, 0777, TRUE);

            touch($uploads_dir . '/index.html');

        }

        $uploaded = false;

        $model = new Upload();

        if (isset($_POST['Upload'])) {

            $model->attributes = $_POST['Upload'];

            $file = CUploadedFile::getInstance($model, 'file');

            $newName = substr(md5($file->extensionName . round((microtime(true) * 1000))), 0, 17) . '.' . $file->extensionName; 

            $file_name = $uploads_dir . '/' . $newName;

            if ($model->validate()) {

                $attache = new Attache();

                $uploaded = $file->saveAs($file_name, TRUE);

                $attache->name = $file->getName();

                $attache->path = $dir . '/' . $newName;

                $attache->create_time = time();

                $attache->save();

            }

        }

 

        $this->render('index', array(

            'model' => $model,

            'uploaded' => $uploaded,

            'dir' => $uploads_dir,

        ));

    }

}

Upload.php:

<?php

class Upload extends CFormModel {

 

    public $file;

 

    public function rules() {

        return array(

            array('file', 'file', 'types' => 'jpg, gif, png,zip'),

        );

    }

}

图片显示页面:

自定义图片大小,缩略图自动生成

<?php

/**

 * list.php

 * Created on: 2014-1-26 13:12:01 by Outsider

 */

?>

<?php foreach ($list as $v): ?>

    <img src="<?php echo Yii::app()->createUrl('test/getThumb', array('path' => '/uploads' . $v['path'], 'w' => '150', 'h' => '150')) ?>">

<?php endforeach; ?>

图片上传表单:

<?php if($uploaded):?>

<p>File was uploaded. Check <?php echo $dir?>.</p>

<?php endif ?>

<?php echo CHtml::beginForm('','post',array

        ('enctype'=>'multipart/form-data'))?>

    <?php echo CHtml::error($model, 'file')?>

    <?php echo CHtml::activeFileField($model, 'file')?>

    <?php echo CHtml::submitButton('Upload')?>

<?php echo CHtml::endForm()?>

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

PHP 相关文章推荐
一个简洁的多级别论坛
Oct 09 PHP
一个改进的UBB类
Oct 09 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 #PHP
yii的CURD操作实例详解
Dec 04 #PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 #PHP
php生成随机颜色方法汇总
Dec 03 #PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 #PHP
Yii框架中memcache用法实例
Dec 03 #PHP
yii中widget的用法
Dec 03 #PHP
You might like
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php while循环控制的简单实例
2016/05/30 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
python中pygame模块用法实例
2014/10/09 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
介绍一下Java的安全机制
2012/06/28 面试题
应聘自荐书
2013/10/08 职场文书
旷课检讨书大全
2014/01/21 职场文书
电子专业求职信
2014/06/19 职场文书
倡议书格式
2014/08/30 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
营销总监岗位职责
2014/09/16 职场文书
2014年市场部工作总结
2014/11/25 职场文书
单身证明格式样本
2015/06/15 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers