昨天发现,发布种子页面的 上传图片附件不可用。于是乎就开始了修改。
原来一直以为是权限问题。结果给排除了,原来是代码目录创建的位置不对,所以才无法上传。
修改了如下内容,使之能够进行图片上传
修改 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); //释放内存
}