现在在用ThinkPHP框架做上传图片,需要生成二个缩略图,上传的图片比较多,所以需要生成子目录。但是缩略图在上传过程中,却不能跟上传的图片在同一个目录中。后来看了下THINKPHP的上传类,需要自己手动修改下,才行。
一、先看我的上传程序吧。
PHP Code复制内容到剪贴板
  1. import('ORG.Net.UploadFile');   
  2.         $upload             = new UploadFile();   
  3.         $upload->thumb      = true;   
  4.         $upload->thumbMaxWidth  = '100,200';   
  5.         $upload->thumbMaxHeight = '100,250';   
  6.         $upload->thumbPrefix    = '';   
  7.         $upload->thumbSuffix    = '_t100,_t200';   
  8.         $upload->thumbPath      = '';   
  9.         $upload->autoSub    = true;   
  10.         $upload->subType    = 'date';   
  11.         $upload->dateFormat = 'Y/d/';   
  12.         $upload->saveRule   = time() + rand(1000,9999);   
  13.         $upload->allowExts  = array('jpg''gif''png''jpeg');   
  14.         $upload->savePath   = THINK_PATH . '..//puploads/';   
  15.   
  16.         if(!$upload->upload()) {   
  17.             echo $upload->getErrorMsg();   
  18.         } else {   
  19.             $info = $upload->getUploadFileInfo();   
  20.         }  

二、修改ThinkPHP\Lib\ORG\Net\UploadFile.class.php的,大概151行左右
PHP Code复制内容到剪贴板
  1. $image =  getimagesize($filename);   
  2.             //yxy add   
  3.             $file_savename = $file['savename'];   
  4.             $sub_path = ”;   
  5.             if($this->autoSub){   
  6.                 $sub_path = $this->getSubName($file).‘/’;   
  7.                 $file_savename = str_replace($sub_path,”,$file_savename);   
  8.             }   
  9.                
  10.             if(false !== $image) {   
  11.                 //是图像文件生成缩略图   
  12.                 $thumbWidth     =   explode(',',$this->thumbMaxWidth);   
  13.                 $thumbHeight        =   explode(',',$this->thumbMaxHeight);   
  14.                 $thumbPrefix        =   explode(',',$this->thumbPrefix);   
  15.                 $thumbSuffix = explode(',',$this->thumbSuffix);   
  16.                 $thumbFile          =   explode(',',$this->thumbFile);   
  17.                 $thumbPath    =  $this->thumbPath?$this->thumbPath:$file['savepath'];   
  18.                 //yxy add   
  19.                 $thumbPath  = $thumbPath . $sub_path;   
  20.   
  21.                  // 生成图像缩略图   
  22.                 import($this->imageClassPath);   
  23.                 $realFilename  =  $this->autoSub?basename($file['savename']):$file['savename'];   
  24.                 for($i=0,$len=count($thumbWidth); $i<$len$i++) {   
  25.                     $thumbname  =   $thumbPath.$thumbPrefix[$i].substr($realFilename,0,strrpos($realFilename'.')).$thumbSuffix[$i].'.'.$file['extension'];   
  26.                     Image::thumb($filename,$thumbname,'',$thumbWidth[$i],$thumbHeight[$i],true);   
  27.                 }   
  28.                 if($this->thumbRemoveOrigin) {   
  29.                     // 生成缩略图之后删除原图   
  30.                     unlink($filename);   
  31.                 }  

其中的yxy add 就是我们需要手动增加的。有二处哦。这样一修改后,Thinkphp的缩略图上传所在的目录就跟我们上传的图片在同一个目录层级下的了。

当然,如果你还想更加自由的修改,参与以上就可以修改达到你想的目的了!

版权声明:若无特殊注明,本文皆为( yueshuo )原创,转载请保留文章出处。