VIP福利
主页 > 建站问题 > 织梦技巧 > 织梦DedeCMS发布图片到指定远程服务器

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

此教程让织梦DedeCMS网站的图片发布到指定服务器上,且网址也使用远程的网址,可以节省本地网站的文件空间。 Linux宝塔面板的小伙伴需要在PureFTPd里开启被动模式 进入宝塔面板,右侧,软件管理,找到PureFTPd,设置,配置修改,搜索ForcePassiveIP,去掉它前面的#号,192.168.0.1改成你的外网IP,保存,重启PureFTPd或者服务器 其他linux环境的vsftpd,搜索pasv_address+外网IP 开启远程设置 文章模型缩略图和文章内容图片发布到远程服务器 1、 […]



此教程让织梦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 `58pic_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 `58pic_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 `58pic_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();
 
}

2、打开 /dede/album_edit.php 找到

//生成HTML

在它上面加入


 
$row1 = $dsql->GetOne("SELECT * FROM `58pic_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 `58pic_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 `58pic_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();
 
}

完成。


共有 条评论