系统自带的文件上传类可以生成多个缩略图,但是都存放在同一个目录下。
我发现只要在系统的源代码里修改一下,就可以实现缩略图存放在不同目录下!
把原来的:
if(1 == $this->thumbType){
Image::thumb2($filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);
}else{
Image::thumb($filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);
} 改成:
if(1 == $this->thumbType){ Image::thumb2($filename,$thumbPath[$i].$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);
}else{
Image::thumb($filename,$thumbPath[$i].$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);
} 控制器上上传参数设置:
$date = date('Ymd');
$targetFolder = '../Uploads/'; // Relative to the root
$targetFolder_s = '../Uploads/s/'.date('Ymd').'/'; // Relative to the root
$targetFolder_m = '../Uploads/m/'.date('Ymd').'/'; // Relative to the root
$targetFolder_b = '../Uploads/b/'.date('Ymd').'/'; // Relative to the root
if(!file_exists($targetFolder_b)){
mkdir($targetFolder_b);
}
if(!file_exists($targetFolder_s)){
mkdir($targetFolder_s);
}
if(!file_exists($targetFolder_m)){
mkdir($targetFolder_m);
}
import("ORG.Net.UploadFile");
$upload = new UploadFile();
$upload->maxSize = 10485760 ;
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');
$upload->savePath = $targetFolder;
$upload->thumb = true;
$upload->thumbPrefix='';
$upload->thumbPath=array($targetFolder_s,$targetFolder_m,$targetFolder_b);
$upload->thumbMaxWidth='200,300,620';
$upload->thumbMaxHeight='120,180,300';
$upload->thumbRemoveOrigin=true;
if(!$upload->upload()) {
echo $upload->getErrorMsg();
}else{
$info = $upload->getUploadFileInfo();
} 改完后,好像不能自动检测目录的存在,需要自己手动判断了。
上传后的效果图:
用的是uploadify插件!
其它代码在另一篇:http://my.oschina.net/geomen/blog/150183