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 相关文章推荐
PHP学习之数组值的操作
Apr 17 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
php插入含有特殊符号数据的处理方法
Nov 24 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 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
php初始化对象和析构函数的简单实例
2014/03/11 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
交通事故检查书范文
2014/01/30 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
开学典礼感言
2014/02/16 职场文书
化工操作工岗位职责
2014/04/29 职场文书
批评与自我批评范文
2014/10/15 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
2016银行求职自荐信
2016/01/28 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书