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静态调用非静态方法的应用分析
May 02 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
php 可变函数使用小结
Jun 12 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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 动态多文件上传
2009/01/18 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
vue3.0 上手体验
2020/09/21 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python对List中的元素排序的方法
2018/04/01 Python
python tornado微信开发入门代码
2018/08/24 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
python实现磁盘日志清理的示例
2020/11/05 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
电大毕业个人生自我鉴定
2014/03/26 职场文书
教研活动总结
2014/04/28 职场文书
酒店管理求职信
2014/06/09 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
事业单位聘任报告
2015/03/02 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
中秋节感想
2015/08/10 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书