在Dedecms(織夢內(nèi)容管理系統(tǒng))中,遠程發(fā)布圖片到服務(wù)器是一項常見需求,通過配置和使用不同的云存儲服務(wù),可以實現(xiàn)這一功能,以下是關(guān)于如何將圖片從本地上傳到遠程服務(wù)器的詳細步驟和相關(guān)FAQs:
使用又拍云存儲
1、準備工作:
確保服務(wù)器的PHP版本 >= 5.5,推薦使用PHP 7.0。
下載并解壓縮phpsdk壓縮包(例如phpsdk3.3.0.zip),并將其復(fù)制到Dedecms的include目錄下。
2、修改文件:
打開/include/dialog/select_images_post.php
文件,找到并修改以下代碼段:
$fullfilename = $cfg_basedir.$activepath."/".$filename;
修改為:
$fullfilename = $activepath."/".$filename;
或者:
$fullfilename = '/'.md5($_SERVER['HTTP_HOST']).$activepath."/".$filename;
在該語句下面增加如下代碼塊:
/* * $filename_name : 11ZF215300B29.jpg * $filename : 190702/11ZF2152U3440.jpg * $activepath : /uploads/allimg */ # 上傳圖片到又拍云存儲 開始 require_once DEDEINC . "/upyunphpsdk/vendor/autoload.php"; use UpyunUpyun; use UpyunConfig; $serviceConfig = new Config('服務(wù)名稱', '操作員賬號', '操作員密碼'); $serviceConfig>uploadType = 'AUTO'; $client = new Upyun($serviceConfig); $local_file_path = ''; $remote_file_path = '/'.md5($_SERVER['HTTP_HOST']).$activepath.'/'.$filename; $file = fopen($imgfile, 'r'); $client>write($remote_file_path, $file); print_r($client); # 上傳圖片到又拍云存儲 結(jié)束
注釋掉原來的移動命令:
// move_uploaded_file($imgfile, $fullfilename) or die("上傳文件到 $fullfilename 失敗!");
使用阿里云OSS
1、準備工作:
開通阿里云OSS服務(wù),并獲取相應(yīng)的密鑰信息。
下載最新的php SDK開發(fā)包。
2、配置與修改:
在conf.inc.php配置文件中填寫OSS相關(guān)信息如ID、key等。
在Dedecms的include目錄新建一個OSS目錄,并將SDK中的文件復(fù)制到該目錄。
在文章處理函數(shù)inc_archives_functions.php文件中引用:
require_once(DEDEINC.'/OSS/tutorial.php');
修改inc_archives_functions.php中有關(guān)圖片上傳的部分,使用tutorial.php里的upload_by_file函數(shù)上傳到OSS服務(wù)器,并替換圖片地址為OSS的遠程地址。
常見問題解答(FAQs)
1、Q: Dedecms遠程附件圖片整合阿里云存儲OSS插件教程中是否支持FTP形式操作?
A: 不支持,目前dedecms系統(tǒng)本身實現(xiàn)的遠程附件功能是基于FTP上傳的,而阿里云是通過web來上傳的,官方并未提供ftp形式操作的支持。
2、Q: 如何解決Dedecms無法保存遠程圖片到本地服務(wù)器的問題?
A: 確保編輯區(qū)域上方的“下載遠程圖片和資源”選項被勾選,并在系統(tǒng)設(shè)置里面的其他選項中選擇“遠程圖片本地化”,檢查網(wǎng)站目錄中是否有allimg文件夾,以及確保服務(wù)器上沒有禁用fsockopen()函數(shù),如果問題依然存在,嘗試將fsockopen替換為stream_socket_client。
通過以上步驟和解答,用戶可以有效地將圖片從本地上傳到遠程服務(wù)器,無論是使用又拍云還是阿里云OSS,都能實現(xiàn)這一需求,解決常見問題也能確保整個過程的順利進行。