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

ThinkPHP3.0略缩图不能保存到子目录

发布:smiling 来源: PHP粉丝网  添加日期:2013-12-03 20:10:46 浏览: 评论:0 

THINKPHP3.0上传文件后略缩图不能保存到子目录,是因为UploadFile.class.php这个上传类中getSubName()函数只能创建原图的子目录而不能创建略缩图的子目录,可以说是BUG。

解决办法一:ThinkPHP官方提供的办法,我并没有测试过:升级到ThinkPHP3.1最新的UploadFile.class.php(https://github.com/liu21st/extend/tree/master/Extend/Library/ORG/Net),下载后替换原来的UploadFile.class.php

解决办法二:修改UploadFile.class.php的部分代码,这是自己做的解决办法,增加一个略缩图的子目录生成函数:

步骤1>>UploadFile.class.php中模仿getSubName()函数创建一个getThumbSubName()函数:

  1. private function getThumbSubName($file) { 
  2.   switch($this->subType) {  
  3.     case 'date'
  4.       $dir = date($this->dateFormat,time());  
  5.       break;  
  6.     case 'hash':  
  7.     default:  
  8.       $name = md5($this->thumbPath); 
  9.       $dir = '';  
  10.       for($i=0;$i<$this->hashLevel;$i++) {  
  11.         $dir .= $name{$i}.'/';  
  12.       } 
  13.       break
  14.   }  
  15.   if(!is_dir(($this->thumbPath).$dir)) { 
  16.     mkdir(($this->thumbPath).$dir);  
  17.   }  
  18.   return $dir

步骤2>>UploadFile.class.php中158行改为

$thumbPath = $this->thumbPath?$this->thumbPath.($this->autoSub?$this->getThumbSubName($file).'/':''):$file['savepath'];

Tags: ThinkPHP3 0 缩图 子目录

分享到: