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扩展开发经验分享
Sep 06 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
php计算整个目录大小的方法
Jun 19 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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中$this和$that指针使用实例
2015/01/06 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
提升python处理速度原理及方法实例
2019/12/25 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
自我鉴定模板
2013/10/29 职场文书
化工专业应届生求职信
2013/11/08 职场文书
小饰品店的创业计划书范文
2013/12/28 职场文书
美术国培研修感言
2014/02/12 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
班主任寄语2016
2015/12/04 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
mysql函数全面总结
2021/11/11 MySQL
Java无向树分析 实现最小高度树
2022/04/09 Javascript