织梦DedeCMS发布图片到指定远程服务器

此教程让织梦DedeCMS网站的图片发布到指定服务器上,且网址也使用远程的网址,可以节省本地网站的文件空间。

Linux宝塔面板的小伙伴需要在PureFTPd里开启被动模式

进入宝塔面板,右侧,软件管理,找到PureFTPd,设置,配置修改,搜索ForcePassiveIP,去掉它前面的#号,192.168.0.1改成你的外网IP,保存,重启PureFTPd或者服务器

织梦DedeCMS发布图片到指定远程服务器

织梦DedeCMS发布图片到指定远程服务器

其他linux环境的vsftpd,搜索pasv_address+外网IP

开启远程设置

织梦DedeCMS发布图片到指定远程服务器

织梦DedeCMS发布图片到指定远程服务器

文章模型缩略图和文章内容图片发布到远程服务器

1、打开 /dede/article_add.php 找到

//生成HTML

在它上面加入

$row1 = $dsql->GetOne("SELECT * FROM `#@__multiserv_config`");
$isftp = $row1['remoteuploads'];
$ftpurl = $row1['remoteupUrl'];
$ftpconfig = $row1['servinfo'];
$ftpconfig_arr = array();
$ftpconfig_txt = explode('|', $ftpconfig);
foreach($ftpconfig_txt as $str){
    $ftpconfig_arr[] = trim($str);
}

if($isftp == 1){        
    $config = array(
      'hostname' => $ftpconfig_arr[1],
      'username' => $ftpconfig_arr[3],
      'password' => $ftpconfig_arr[4],
      'port' => $ftpconfig_arr[2],
      'debug' => 'TRUE'
    );
    $ftps = new FTP(); 
    $ftps->connect($config);
    $row2 = $dsql->GetOne("SELECT litpic FROM `#@__archives` WHERE id=$arcID");
    $imglist = $row2['litpic'];
    $row3 = $dsql->GetOne("SELECT body FROM `$addtable` WHERE aid=$arcID");
    preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $row3['body'], $matches);
    $arr=array_unique($matches[3]);
    foreach($arr as $key){ 
        $imglist .= ','.$key; 
    }
    $imglistarr = array();
    $imglist_txt = explode(',', $imglist);
    foreach($imglist_txt as $str){
        $remotefile = str_replace(DEDEROOT, '', $str);
        $localfile = '..'.$remotefile;
        $remotefile2 = str_replace('uploads/', 'uploadfile/', $remotefile);
        $remotedir = preg_replace('/[^\/]*\.(jpg|gif|bmp|png)/', '', $remotefile2);
        $ftps->rmkdir($remotedir);
        $ftps->upload($localfile, $remotefile2);
    }
    $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET `litpic`=REPLACE(`litpic`,'/uploads','$ftpurl/uploadfile') WHERE `litpic` LIKE '%/uploads%' AND `id` = $arcID");
    $dsql->ExecuteNoneQuery("UPDATE `$addtable` SET `body`=REPLACE(`body`,'/uploads','$ftpurl/uploadfile') WHERE `body` LIKE '%/uploads%' AND `aid` = $arcID");
    $ftps->close();
}

打开 /dede/album_edit.php 找到

//生成HTML

在它上面加入

$row1 = $dsql->GetOne("SELECT * FROM `#@__multiserv_config`");
$isftp = $row1['remoteuploads'];
$ftpurl = $row1['remoteupUrl'];
$ftpconfig = $row1['servinfo'];
$ftpconfig_arr = array();
$ftpconfig_txt = explode('|', $ftpconfig);
foreach($ftpconfig_txt as $str){
    $ftpconfig_arr[] = trim($str);
}

if($isftp == 1){        
    $config = array(
      'hostname' => $ftpconfig_arr[1],
      'username' => $ftpconfig_arr[3],
      'password' => $ftpconfig_arr[4],
      'port' => $ftpconfig_arr[2],
      'debug' => 0
    );
    $ftps = new FTP(); 
    $ftps->connect($config);
    
    $row2 = $dsql->GetOne("SELECT litpic FROM `#@__archives` WHERE id=$id");
    $imglist = $row2['litpic'];
    $row3 = $dsql->GetOne("SELECT imgurls FROM `$addtable` WHERE aid=$id");
    $imgurls = $row3['imgurls'];
    if($imgurls != '')
    {
        $dtp = new DedeTagParse();
        $dtp->LoadSource($imgurls);
        $images = array();
        if(is_array($dtp->CTags))
        {
            foreach($dtp->CTags as $ctag)
            {
                if($ctag->GetName() == 'img')
                {
                    $imglist .= ','.trim($ctag->GetInnerText());
                }
            }
        }
        $dtp->Clear();
    }

    $imglistarr = array();
    $imglist_txt = explode(',', $imglist);
    foreach($imglist_txt as $str){
        if(preg_match('/uploads/', $str)){
            $remotefile = str_replace(DEDEROOT, '', $str);
            $localfile = '..'.$remotefile;
            $remotefile2 = str_replace('uploads/', 'uploadfile/', $remotefile);
            $remotedir = preg_replace('/[^\/]*\.(jpg|gif|bmp|png)/', '', $remotefile2);
            $ftps->rmkdir($remotedir);
            $ftps->upload($localfile, $remotefile2);
        }
    }
    $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET `litpic`=REPLACE(`litpic`,'/uploads','$ftpurl/uploadfile') WHERE `litpic` LIKE '%/uploads%' AND `id` = $id");
    $dsql->ExecuteNoneQuery("UPDATE `$addtable` SET `imgurls`=REPLACE(`imgurls`,'/uploads','$ftpurl/uploadfile') WHERE `imgurls` LIKE '%/uploads%' AND `aid` = $id");
    $ftps->close();
}

完成。

添加新评论

昵称
邮箱
网站