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