杰奇1.8以上版本,后台采集封面图bug修复

2018-02-18T19:29:00

之前在测试杰奇的后台采集的时候,发现了一个奇怪的问题,就是在后台采集的时候,虽然小说信息和章节都可以被成功采集,但是封面图片却变成404。起初我认为是文件夹权限的问题导致封面图片不能正确保存,但是其实并不是这样,似乎这就是个bug,但是在1.7是正常的,而1.8以上版本全都有这个问题(包括3.0和3.1),最后经过查阅,在一个网站找到的相关的教程,自己折腾后得出该篇文章。
相关文件是加密的,自己浏览博客其它文章,里面分享了解密工具。

2019/09/12补充:
杰奇1.8到杰奇3.1都存在这种问题,因为官方完全放弃了后台采集的继续开发和维护(可能是为了避风头)。另外本篇文章原内容是讲解单篇采集的,目前批量采集已经修复,请看文章最后的补充。

以杰奇2.3版本为例,打开单篇采集相关的/modules/article/admin/collect.php
首先看一段代码,大概在215-226行:

$_REQUEST["articleimage"] = trim($_REQUEST["articleimage"]);
$imgtary = array(1 => ".gif", 2 => ".jpg", 3 => ".jpeg", 4 => ".png", 5 => ".bmp");
if (!empty($_REQUEST["articleimage"])) {
$simage_postfix = strrchr(trim(strtolower($_REQUEST["articleimage"])), ".");
$tmpvar = intval(array_search($simage_postfix, $imgtary));
if (0 < $tmpvar) {
$imgflag = $imgflag | 1;
$imgflag = $imgflag | ($tmpvar * 4);
}
}

在这里,$simage_postfix定义了图片的后缀

但是继续看262-268行

$tmpstr = jieqi_urlcontents($_REQUEST["articleimage"], $colary);
if (!empty($tmpstr)) {
$imagefile = $package->getDir("imagedir") . "/" . $id . "s" . $imagetype;
@jieqi_writefile($imagefile, $tmpstr);
@chmod($imagefile, 511);
}

其中的imagetype根本就不存在定义,但是却处于获取后缀值的位置,这就是个很尴尬的问题,所以后台采集虽然采集到图片,但是图片却没有后缀,于是导致了图片不显示的情况。

那么解决办法就是:

将$imagetype改为$simage_postfix

2019/09/12补充(感谢群内大佬的分享):

对于批量采集,所在的文件是/modules/article/include/updateone.php,找到280行左右

$tmpstr = jieqi_urlcontents($articleimage, $colary);
if (!empty($tmpstr)) {
    $imagefile = $package->getDir('imagedir') . '/' . $id . 's' . $imagetype;
    @jieqi_writefile($imagefile, $tmpstr);
    @chmod($imagefile, 511);
}

还是一样,在这个文件中,$simage_postfix定义了图片的后缀,可是这里出现的是$imagetype,所以解决办法就是把$imagetype改为$simage_postfix。

规则之树版权所有,转载请注明来源,标明作者及原文链接

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »