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 相关文章推荐
JS实现php的伪分页
May 25 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
PHP实现简单汉字验证码
Jul 28 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
php实现三级级联下拉框
Apr 17 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
php微信公众号开发之校园图书馆
Oct 20 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
一步一步学习PHP(8) php 数组
2010/03/05 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
python对象与json相互转换的方法
2019/05/07 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Python插件机制实现详解
2020/05/04 Python
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
老师推荐信
2013/10/28 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
拔河比赛口号
2014/06/10 职场文书
情人节活动总结范文
2015/02/05 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
史上最牛辞职信
2015/05/13 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
趣味运动会口号
2015/12/24 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
springboot用户数据修改的详细实现
2022/04/06 Java/Android
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android