当前位置:首页 > CMS教程 > 其它CMS > 列表

yii实现图片上传及缩略图生成的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-02 20:57:43 浏览: 评论:0 

这篇文章主要介绍了yii实现图片上传及缩略图生成的方法,详细分析了图片的上传及缩略图的生成原理与实现方法,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了利用yii框架来实现图片上传功能并在上传成功之后自动生成缩略图的方法,分享给大家供大家参考。具体实现方法如下:

Action文件:

  1. <?php 
  2. /** 
  3.  * TestController.php 
  4.  * Created on: 2014-1-26 12:59:36 by Outsider 
  5.  */ 
  6. class TestController extends CController { 
  7.  
  8.     /** 
  9.      * 缩略图片生成 
  10.      * @ path 图片路径 
  11.      * @ width 图片宽度 
  12.      * @ height 图片高度 
  13.      */ 
  14.     public function actionGetThumb($path$w$h) { 
  15.         $file_name = md5($path . $w . $h); 
  16.         if (file_exists('./temp/' . $file_name . '.jpg')) { 
  17.             header('location:/temp/' . $file_name . '.jpg'); 
  18.             Yii::app()->end(); 
  19.         } 
  20.         Yii::import("ext.EPhpThumb.EPhpThumb"); 
  21.         $thumb = new EPhpThumb(); 
  22.         $thumb->init(); 
  23.         $thumb->create('.' . $path
  24.                 ->adaptiveResize($w$h
  25.                 ->save('./temp/' . $file_name . '.jpg'
  26.                 ->show(); 
  27.     } 
  28.  
  29.     /* 
  30.      * 图片显示 
  31.      */ 
  32.  
  33.     public function actionList() { 
  34.         $attache = Attache::model(); 
  35.         $list = $attache->findAll(); 
  36.         $this->render('list'array('list' => $list)); 
  37.         die
  38.     } 
  39.  
  40.     /** 
  41.      * 文件上传 
  42.      */ 
  43.     public function actionIndex() { 
  44.         $path = getcwd() . 'uploads'
  45.         $dir = DIRECTORY_SEPARATOR . date('Y') . DIRECTORY_SEPARATOR . date('m'); 
  46.         $dir = str_replace("\", "/", $dir); 
  47.         $uploads_dir = str_replace("\", "/", $path . $dir); 
  48.         if (!is_dir($uploads_dir) || !is_writeable($uploads_dir)) { 
  49.             mkdir($uploads_dir, 0777, TRUE); 
  50.             touch($uploads_dir . '/index.html'); 
  51.         } 
  52.         $uploaded = false; 
  53.         $model = new Upload(); 
  54.         if (isset($_POST['Upload'])) { 
  55.             $model->attributes = $_POST['Upload']; 
  56.             $file = CUploadedFile::getInstance($model'file'); 
  57.             $newName = substr(md5($file->extensionName . round((microtime(true) * 1000))), 0, 17) . '.' . $file->extensionName;  
  58.             $file_name = $uploads_dir . '/' . $newName
  59.             if ($model->validate()) { 
  60.                 $attache = new Attache(); 
  61.                 $uploaded = $file->saveAs($file_name, TRUE); 
  62.                 $attache->name = $file->getName(); 
  63.                 $attache->path = $dir . '/' . $newName
  64.                 $attache->create_time = time(); 
  65.                 $attache->save(); 
  66.             } 
  67.         } 
  68.  
  69.         $this->render('index'array
  70.             'model' => $model
  71.             'uploaded' => $uploaded
  72.             'dir' => $uploads_dir
  73.         )); 
  74.     } 

Upload.php:

  1. <?php 
  2. class Upload extends CFormModel { 
  3.  
  4.     public $file
  5.  
  6.     public function rules() { 
  7.         return array
  8.             array('file''file''types' => 'jpg, gif, png,zip'), 
  9.         ); 
  10.     } 

图片显示页面:

自定义图片大小,缩略图自动生成,代码如下:

  1. <?php 
  2. /** 
  3.  * list.php 
  4.  * Created on: 2014-1-26 13:12:01 by Outsider 
  5.  */ 
  6. ?> 
  7. <?php foreach ($list as $v): ?> 
  8.     <img src="<?php echo Yii::app()->createUrl('test/getThumb', array('path' => '/uploads' . $v['path'], 'w' => '150', 'h' => '150')) ?>"
  9. <?php endforeach; ?> 

图片上传表单:

  1. <?php if($uploaded):?> 
  2. <p>File was uploaded. Check <?php echo $dir?>.</p> 
  3. <?php endif ?> 
  4. <?php echo CHtml::beginForm('','post',array 
  5.         ('enctype'=>'multipart/form-data'))?> 
  6.     <?php echo CHtml::error($model'file')?> 
  7.     <?php echo CHtml::activeFileField($model'file')?> 
  8.     <?php echo CHtml::submitButton('Upload')?> 
  9. <?php echo CHtml::endForm()?> 

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

Tags: yii图片上传 yii缩略图生成

分享到: