首页 > php教程 > php手册 > 正文

UploadFile类多缩略图存不同目录

php中文网
发布: 2016-06-07 11:44:24
原创
1294人浏览过

发现现在的系统自带的upload类可以创建多个缩略图,但是只能存于同一个文件夹下,我看了一下源文件代码,发现只要修改几个地方就可以实现存放不同文件夹下了。
private function save($file) {<br>         $filename = $file['savepath'].$file['savename'];<br>         if(!$this-&gt;uploadReplace &amp;&amp; is_file($filename)) {<br>             // 不覆盖同名文件<br>             $this-&gt;error    =    '文件已经存在!'.$filename;<br>             return false;<br>         }<br>         // 如果是图像文件 检测文件格式<br>         if( in_array(strtolower($file['extension']),array('gif','jpg','jpeg','bmp','png','swf'))) {<br>             $info   = getimagesize($file['tmp_name']);<br>             if(false === $info || ('gif' == strtolower($file['extension']) &amp;&amp; empty($info['bits']))){<br>                 $this-&gt;error = '非法图像文件';<br>                 return false;                <br>             }<br>         }<br>         if(!move_uploaded_file($file['tmp_name'], $this-&gt;autoCharset($filename,'utf-8','gbk'))) {<br>             $this-&gt;error = '文件上传保存错误!';<br>             return false;<br>         }<br>         if($this-&gt;thumb &amp;&amp; in_array(strtolower($file['extension']),array('gif','jpg','jpeg','bmp','png'))) {<br>             $image =  getimagesize($filename);<br>             if(false !== $image) {<br>                 //是图像文件生成缩略图<br>                 $thumbWidth        =    explode(',',$this-&gt;thumbMaxWidth);<br>                 $thumbHeight    =    explode(',',$this-&gt;thumbMaxHeight);<br>                 $thumbPrefix    =    explode(',',$this-&gt;thumbPrefix);<br>                 $thumbSuffix    =   explode(',',$this-&gt;thumbSuffix);<br>                 $thumbFile        =    explode(',',$this-&gt;thumbFile);<br>                 $thumbPath      =   $this-&gt;thumbPath?:dirname($filename).'/';  //我修改的地方<br>                 $thumbExt       =   $this-&gt;thumbExt ? $this-&gt;thumbExt : $file['extension']; //自定义缩略图扩展名<br>                 // 生成图像缩略图<br>                 import($this-&gt;imageClassPath);<br>                 for($i=0,$len=count($thumbWidth); $i                     if(!empty($thumbFile[$i])) {<br>                         $thumbname  =   $thumbFile[$i];<br>                     }else{<br>                         $prefix     =   isset($thumbPrefix[$i])?$thumbPrefix[$i]:$thumbPrefix[0];<br>                         $suffix     =   isset($thumbSuffix[$i])?$thumbSuffix[$i]:$thumbSuffix[0];<br>                         $thumbname  =   $prefix.basename($filename,'.'.$file['extension']).$suffix;<br>                     }<br>                     if(1 == $this-&gt;thumbType){<br>                         Image::thumb2($filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true); //修改的地方<br>                     }else{<br>                         Image::thumb($filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true); //修改的地方<br>                     }<br>                     <br>                 }<br>                 if($this-&gt;thumbRemoveOrigin) {<br>                     // 生成缩略图之后删除原图<br>                     unlink($filename);<br>                 }<br>             }<br>         }<br>         if($this-&gt;zipImags) {<br>             // TODO 对图片压缩包在线解压<br><br>         }<br>         return true;<br>     }如果改后会出现什么问题,还请告知~~

我后来发现改成数组参数更方便哈!
配置文件设置成这样:$upload-&gt;thumbPath=array($targetFolder_s,$targetFolder_m,$targetFolder_b);系统的源类文件只要修改:
if(1 == $this-&gt;thumbType){<br>                         Image::thumb2($filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);<br>                     }else{<br>                         Image::thumb($filename,$thumbPath.$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);<br>                     }改成:$thumbPath后加个[$i]if(1 == $this-&gt;thumbType){<br>                         Image::thumb2($filename,$thumbPath[$i].$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);<br>                     }else{<br>                         Image::thumb($filename,$thumbPath[$i].$thumbname.'.'.$thumbExt,'',$thumbWidth[$i],$thumbHeight[$i],true);<br>                     }就可以了!
还有一个问题是,如果存放路径是动态获取的,比如按时间创建目录,则需要先创建目录,不然存放不了。

AD:真正免费,域名+虚机+企业邮箱=0元

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号