昨天发现,发布种子页面的 上传图片附件不可用。于是乎就开始了修改。
原来一直以为是权限问题。结果给排除了,原来是代码目录创建的位置不对,所以才无法上传。
修改了如下内容,使之能够进行图片上传
修改 funcs.php 第1642 mkdir($attach_dir.'/'.$attach_subdir,0777);//要在形如attaments下新建如201103这种形式的文件夹。
修改了后就可以上传图片,下一个问题是图片无法在论坛里面显示,cgbt上传后的图片统一的进行了重命名 图片加上后缀 _ori ,这一步操作在funcs.php的1645左右操作, 无法显示的根本原因部署的cgbt magicwand本应该对上传的文件进行相应的操作或,如bmp转jpg jpg进行压缩, 处理后的图片要形成后缀 _s100的文件。 这一步操作在funcs.php 大约3000多行操作。可是部署的没有进行这种操作,或者说操作不正确, 处理后的图片放在了attaments文件夹下,在论坛显示的时候, 要把处理后的图片copy(应该copy后缀为_s100的)到 cache下, 并且从cache下显示。因为没有处理,所以没有生成要显示的图片。
经过一天的修改,也没有修改的让magicwand处理图片成功。 于是换了中偷懒的方法,就是让论坛直接显示上传的原版文件
最后,修改的方法是:
上传的图片,不让重命名为ori的后缀,这样可以让cache找到文件,虽然这是没有处理过的图片。
代码如下:
funcs.php 1649行
$attach['attachment'] = preg_replace("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(/.|$)/i", "_//1//2",$torrent_id.'_'.substr(md5($filename.microtime()), 26).random(6).$attach['ext']);
发现的技巧(没有修改,用到magicwand 是要修改的)
attachments.php 第三十行if ($thumb) 修改为$attach["isimage"],功能是 在后最放加上 _s100
//自己写的处理图片的类
function process_picture($src_pic,$dir,$filename,$width=100) { // $watermark = 'watermark.png'; $file= $src_pic; $small = $dir."/".$filename."_s100"; //读入原图片 $nmw =NewMagickWand(); MagickReadImage($nmw,$file); // $wm_pic = NewMagickWand(); //创建水印图片 //MagickReadImage( $wm_pic, $watermark ); $bg_h = MagickGetImageHeight( $nmw ); $bg_w = MagickGetImageWidth( $nmw ); //图片宽度小于定宽则不压缩 if ($bg_w > $width) { $height = $width / $bg_w * $bg_h; }else { $height = $bg_h; $width = $bg_w; } $wm_h = MagickGetImageHeight( $wm_pic ); $wm_w = MagickGetImageWidth( $wm_pic ); $pos_x = $width - $wm_w - 10; $pos_y = $height - $wm_h - 10; MagickResizeImage($nmw, $width, $height, 13, 1); //压缩图片 //MagickCompositeImage($nmw, $wm_pic, MW_OverCompositeOp, $pos_x,$pos_y); //上水印 MagickSetFormat($nmw, .$extension); MagickSetImageCompression($nmw, MW_JPEGCompression); MagickSetImageCompressionQuality($nmw, 90.0); MagickWriteImage($nmw,$small); //存储图片 DestroyMagickWand($nmw); //释放内存 }