2010-06-06
使用ThinkPHP的自带UploadFile进行图片上传并自动生成缩略图,在开启自动生成下级目录功能后,总是无法成功生成缩略图,万分郁闷下去研读UploadFile.class.php的代码,果然发现一个bug。

使用UploadFile.class.php上传图片并自动生成缩略图,参数如下: 

$upload->savePath = 'upload; 
$upload->autoSub = 1; 
$upload->subType = 'date'; 
$upload->dateFormat = 'Ym'; 
$upload->thumb = 1; 
$upload->thumbPrefix = 'thumb_';


 原图片成功上传保存在 "upload/201006/4c0b122d24992.jpg"目录下,但并没有成功生成缩略图。检查UploadFile.class.php代码发现,在save()方法中,缩略图的保存全名为:"upload/thumb_201006/4c0b122d24992.jpg",显然“thumb_201006”这个目录是不存在的,所以导致了自动生成缩略图失败。其原因是在getSaveName()方法中的如下语句:

 
$saveName   =  $this->getSubName($filename).'/'.$saveName;
将自动生成的子目录也作为了文件名的一部分,而生成缩略图时,又在这个saveName前加了“thumb_”的前缀,导致了错误的出现。
本博客文章非特别注明均属原创,如需转载请保留本博客地址:http://dao.daimaku.com
您的大名:
电子邮箱:
验证码: