最近用织梦Dedecms练手个新项目,发现图片上传的比较多,长期这样对服务器有不小的压力,我的又拍云每年又有多余的代金券,不用可惜了,所以就尝试给织梦的上传图片接入到又拍云,折腾了俩个点儿终于成功了,遂记录下来。

首先要下载好又拍云的php-sdk:https://github.com/upyun/php-sdk/releases,点击最新版的 php-sdk-x.x.x.zip 即可下载。

然后解压上传到织梦目录下的include文件夹里,为了辨识,我给 php-sdk 重命名为了 upyun-php-sdk 。

然后打开 \include\dialog\select_images_post.php 文件,找到 $fullfilename = $cfg_basedir.$activepath."/".$filename; 修改为 $fullfilename = $activepath."/".$filename;

之后在这句下面加入以下代码:

# 上传图片到又拍云存储 开始
require_once DEDEINC . "/upyun-php-sdk/vendor/autoload.php";

use Upyun\Upyun;
use Upyun\Config;

$serviceConfig = new Config('你的存储空间名', '操作员名', '操作员密码');
$serviceConfig->uploadType = 'AUTO';
$client = new Upyun($serviceConfig);
$local_file_path = '';
$remote_file_path = '/'.$activepath.'/'.$filename;
$file = fopen($imgfile, 'r');
$client->write($remote_file_path, $file);
print_r($client);
# 上传图片到又拍云存储 结束

然后给下面的这段代码注释掉或者直接删掉:

move_uploaded_file($imgfile, $fullfilename) or die("上传文件到 $fullfilename 失败!");
if($cfg_remote_site=='Y' && $remoteuploads == 1)
{
    //分析远程文件路径
    $remotefile = str_replace(DEDEROOT, '', $fullfilename);
    $localfile = '../..'.$remotefile;
    //创建远程文件夹
    $remotedir = preg_replace('/[^\/]*\.(jpg|gif|bmp|png)/', '', $remotefile);
    $ftp->rmkdir($remotedir);
    $ftp->upload($localfile, $remotefile);
}

最后拉到最下面,找到 $fileurl = $activepath.'/'.$filename;

改成 $fileurl = '你的又拍云域名带http'.$activepath.'/'.$filename;

这样就大功告成了,发布文章时在编辑器上传图片就会直接上传到又拍云了。

但是还有个小瑕疵,点击上传缩略图还是会上传到本地服务器,我们可以在下面的编辑器先上传缩略图,然后复制获取到的又拍云链接粘贴到缩略图输入框即可。

如果之前有发布过的文章,还需要把本地服务器链接改成又拍云链接,到mysql管理面板(如phpmyadmin)执行两句sql:

UPDATE `dede_archives` SET `litpic` = REPLACE(`litpic`,'/uploads','你的又拍云域名带http/uploads');
UPDATE `dede_addonarticle` SET `body` = REPLACE(`body`,'/uploads','你的又拍云域名带http/uploads')

OK!完美

最后修改:2021 年 11 月 04 日
如果觉得我的文章对你有用,请随意赞赏