[Discuz!] 如何让Discuz门户文章远程图片自动本地化

JUMU实名认证 发表于 2019-11-17 22:08 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
大家好!大家都希望我们的Discuz门户文章的远程图片能够存到本地。那么如何实现这个功能呢?
其实我们的Discuz里面发表文章的时候,它的编辑器里面有这样一个功能。点击一下这个远程图片下载功能的按钮。这样文章里面的远程图片就会自动下载到本地。
但是有些情况下,我们点击这个按钮的时候,他的远程图片没有自动下载到本地。
这是什么原因呢?经过分析。如果我没,使用了远程的图片是Https。那么它下载到本地就会遇到困难。
这样我们修改一下我们Discuz的代码就可以实现这个功能。
也就是说,不管是HTTP或HTTPS,远程图片都可以顺利的本地化。下面我们就介绍一下如何修改地址的代码。
upload/source/include/portalcp/portalcp_upload.php
  1. $arrayimageurl = $temp = $imagereplace = array();
  2.         $string = $_GET['content'];
  3.         $downremotefile = true;
  4.         删掉 preg_match_all("/\<img.+\bsrc\b\s*=('|"|)?(.*)(\\1)([\s].*)?\>/ismUe", $string, $temp, PREG_SET_ORDER);
  5.         增加 preg_match_all("/\<img.+\bsrc\b\s*=('|"|)(.*)('|"|)([\s].*)?\>/ismU", $string, $temp, PREG_SET_ORDER);
  6.         if(is_array($temp) && !empty($temp)) {
  7.                 foreach($temp as $tempvalue) {
  8.                         $tempvalue[2] = str_replace('"', '', $tempvalue[2]);
  9. @@ -52,7 +52,7 @@ if($operation == 'downremotefile') {
  10.                                         continue;
  11.                                 }
  12.                                 $content = '';
  13.                                 删掉 if(preg_match('/^(http:\/\/|\.)/i', $imageurl)) {
  14.                                 增加 if(preg_match('/^(http(s?):\/\/|\.)/i', $imageurl)) {
  15.                                         $content = dfsockopen($imageurl);
  16.                                 } elseif(checkperm('allowdownlocalimg')) {
  17.                                         if(preg_match('/^data\/(.*?)\.thumb\.jpg$/i', $imageurl)) {
复制代码
upload/source/module/forum/forum_ajax.php
  1. }
  2.         $_GET['message'] = str_replace(array("\r", "\n"), array($_GET['wysiwyg'] ? '<br />' : '', "\\n"), $_GET['message']);
  3.         preg_match_all("/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]|\[img=\d{1,4}[x|\,]\d{1,4}\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", $_GET['message'], $image1, PREG_SET_ORDER);
  4.         删掉 preg_match_all("/\<img.+\bsrc\b\s*=('|"|)?(.*)(\\1)([\s].*)?\>/ismUe", $_GET['message'], $image2, PREG_SET_ORDER);
  5.         增加 preg_match_all("/\<img.+\bsrc\b\s*=('|"|)(.*)('|"|)([\s].*)?\>/ismU", $_GET['message'], $image2, PREG_SET_ORDER);
  6.         $temp = $aids = $existentimg = array();
  7.         if(is_array($image1) && !empty($image1)) {
  8.                 foreach($image1 as $value) {
复制代码

  距米网  

找到您想要的设计

工程师、学生在线交流学习平台
关注我们

手机版- 距米网 |苏公网安备32041102000587号

© 2017-2025 居居米 苏ICP备18040927号-1