作者:e我爱你很多 | 来源:互联网 | 2014-06-12 18:37
THINKPHP3.0上传文件后略缩图不能保存到子目录,是因为UploadFile.class.php这个上传类中getSubName()函数只能创建原图的子目录而不能创建...
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()函数:
- private function getThumbSubName($file) {
- switch($this->subType) {
- case 'date':
- $dir = date($this->dateFormat,time());
- break;
- case 'hash':
- default:
- $name = md5($this->thumbPath);
- $dir = '';
- for($i=0;$i<$this->hashLevel;$i++) {
- $dir .= $name{$i}.&#39;/&#39;;
- }
- break;
- }
- if(!is_dir(($this->thumbPath).$dir)) {
- mkdir(($this->thumbPath).$dir);
- }
- return $dir;
- }
步骤2>>UploadFile.class.php中158行改为
$thumbPath = $this->thumbPath?$this->thumbPath.($this->autoSub?$this->getThumbSubName($file).&#39;/&#39;:&#39;&#39;):$file[&#39;savepath&#39;];