帝国CMS是国内较为流行的内容管理系统之一,其二次开发也较为方便。本文将介绍如何在帝国CMS中实现远程图片保存功能。
1. 了解帝国CMS的图片上传机制
在帝国CMS中,图片上传是通过ueditor插件实现的。ueditor插件默认将上传的图片保存在本地服务器上,而不是保存在远程服务器上。因此,我们需要对ueditor插件进行二次开发,使其支持远程图片保存。
2. 修改ueditor插件代码
为了实现远程图片保存,我们需要修改ueditor插件的代码。具体步骤如下:

- 找到ueditor.all.js文件,并备份该文件。
- 在ueditor.all.js文件中搜索“uploadImage”关键字,找到该函数。
- 在该函数中找到“xhr.send(formdata);”代码,并将其注释掉。
- 在该函数中添加如下代码:
var img = document.createElement('img');
img.src = url;
img.onload = function() {
editor.execCommand('insertimage', {
src: url,
alt: alt,
title: title
});
};
以上代码将远程服务器上的图片插入到编辑器中。
3. 修改后台代码
修改完ueditor插件代码后,我们还需要修改后台代码。具体步骤如下:
- 找到admin/include/uploadify/uploadify.php文件,并备份该文件。
- 在uploadify.php文件中找到“$info = $upload->upload();”代码,并将其注释掉。
- 在该代码后面添加如下代码:
$info = $upload->upload();
if ($info) {
$url = $info[0]['url'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$filename = $upload->savePath . $info[0]['savename'];
$fp = fopen($filename, 'w');
fwrite($fp, $output);
fclose($fp);
}
以上代码将远程服务器上的图片保存到本地服务器上。
通过以上步骤,我们就成功地实现了帝国CMS的远程图片保存功能。