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的安全策略
Oct 09 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
PHP云打印类完整示例
Oct 15 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
phpstudy默认不支持64位php的解决方法
Feb 20 PHP
php写入txt乱码的解决方法
Sep 17 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 FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
php修改数组键名的方法示例
2017/04/15 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
python如何使用代码运行助手
2020/07/03 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
2016自主招生校长推荐信范文
2015/03/23 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
MySQL锁机制
2021/04/05 MySQL
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python