首页 > 开发 > ThinkPHP > 正文

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

2020-10-12 21:17:27
字体:
来源:转载
供稿:网友

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'];

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选