PBootCMS 云存储插件

CloudStorage 云存储插件

CloudStorage是一个为PbootCMS开发的云存储插件,支持将网站上传的文件自动同步到各大云存储平台,包括阿里云OSS、七牛云存储、腾讯云COS和又拍云存储。

功能特点

  • 支持多种云存储平台:阿里云OSS、七牛云存储、腾讯云COS、又拍云存储
  • 自动同步上传文件到云存储
  • 支持自定义域名
  • 简单易用的后台配置界面
  • 无缝集成到PbootCMS系统中
  • 支持UEditor编辑器上传集成

安装要求

  • PbootCMS 3.0.0 或更高版本
  • PHP 7.0 或更高版本
  • Composer(用于安装依赖)

安装方法

自动安装

  1. 在PbootCMS后台,进入"系统管理" -> "插件管理"
  2. 点击"安装新插件",选择CloudStorage插件安装包
  3. 点击"安装"按钮完成安装

手动安装

  1. 下载插件安装包并解压
  2. 将解压后的CloudStorage文件夹上传到apps/common/plugin/目录下
  3. 在PbootCMS后台,进入"系统管理" -> "插件管理"
  4. 找到CloudStorage插件,点击"安装"按钮

安装依赖

插件依赖以下PHP SDK,请确保已安装:

composer require aliyuncs/oss-sdk-php qiniu/php-sdk qcloud/cos-sdk-v5 upyun/sdk

加载Composer自动加载文件

为了使用Composer安装的SDK,您需要在PbootCMS的入口文件中加载Composer的自动加载文件。请按照以下步骤操作:

  1. 编辑PbootCMS根目录下的core/init.php文件
  2. 找到定义版本常量的代码(大概 105行 define('CORE_VERSION', Config::get('core_version'));
  3. 在这行代码之前添加以下代码:
// 加载Composer自动加载文件
if (file_exists(ROOT_PATH . '/vendor/autoload.php')) {
    require ROOT_PATH . '/vendor/autoload.php';
}

重要提示:必须在定义版本常量之前加载Composer自动加载文件,否则可能会导致错误。

插件文件结构

 
CloudStorage/
├── adapters/                  # 云存储适配器目录
│   ├── AliyunStorage.php      # 阿里云OSS适配器
│   ├── QiniuStorage.php       # 七牛云存储适配器
│   ├── TencentStorage.php     # 腾讯云COS适配器
│   └── UpyunStorage.php       # 又拍云存储适配器
├── config/                    # 配置目录
│   └── config.json            # 默认配置文件
├── sdk/                       # SDK目录(可选)
├── CloudStorageBase.php       # 云存储基类
├── CloudStorageController.php # 后台控制器
├── CloudStorageHook.php       # 钩子类
├── CloudStorageInterface.php  # 接口定义
├── CloudStorageManager.php    # 管理器类
├── config.json                # 当前配置文件
├── functions.php              # 全局函数定义
├── init.php                   # 初始化文件
├── install.php                # 安装脚本
├── installed.lock             # 安装锁定文件
├── LICENSE                    # 许可证文件
├── loader.php                 # 加载器
├── README.md                  # 说明文档
├── SUMMARY.md                 # 实现总结
├── ueditor_patch.php          # UEditor补丁文件
└── uninstall.php              # 卸载脚本

核心文件说明

  • CloudStorageInterface.php: 定义了所有云存储适配器必须实现的方法
  • CloudStorageBase.php: 实现了通用功能,如错误处理、文件类型获取等
  • CloudStorageManager.php: 负责选择和使用适当的存储服务
  • CloudStorageHook.php: 提供了拦截上传过程的钩子函数
  • loader.php: 负责加载插件的各个组件
  • ueditor_patch.php: 为UEditor编辑器提供云存储支持

配置说明

安装完成后,在PbootCMS后台,进入"系统管理" -> "云存储配置",可以进行以下配置:

基本配置

  • 启用云存储:选择是否启用云存储功能
  • 存储类型:选择要使用的云存储平台(阿里云OSS、七牛云存储、腾讯云COS、又拍云存储)
  • 调试模式:选择是否启用调试模式,启用后会记录详细日志

阿里云OSS配置

  • AccessKey ID:阿里云账号的AccessKey ID
  • AccessKey Secret:阿里云账号的AccessKey Secret
  • Endpoint:OSS的访问域名,如oss-cn-hangzhou.aliyuncs.com
  • Bucket:OSS的存储空间名称
  • 自定义域名:(可选)自定义的访问域名,如https://static.example.com

七牛云存储配置

  • AccessKey:七牛云账号的AccessKey
  • SecretKey:七牛云账号的SecretKey
  • Bucket:七牛云的存储空间名称
  • 域名:七牛云存储空间的访问域名,如https://static.example.com

腾讯云COS配置

  • SecretId:腾讯云账号的SecretId
  • SecretKey:腾讯云账号的SecretKey
  • Region:COS的地域,如ap-guangzhou
  • Bucket:COS的存储桶名称
  • 自定义域名:(可选)自定义的访问域名,如https://static.example.com

又拍云存储配置

  • 服务名称:又拍云的服务名称
  • 操作员:又拍云的操作员账号
  • 操作员密码:又拍云的操作员密码
  • 域名:又拍云服务的访问域名,如https://static.example.com

使用方法

配置完成后,当您在PbootCMS中上传文件时,文件会自动同步到您选择的云存储平台。您无需进行额外的操作,插件会自动处理上传过程。

UEditor编辑器集成

本插件已经自动集成了对UEditor编辑器的支持,当您在内容编辑器中上传图片或文件时,会自动上传到您配置的云存储服务中。

UEditor手动配置(如果自动配置不生效)

如果自动配置不起作用,您可以按照以下步骤手动配置UEditor:

  1. 备份UEditor的上传处理文件:
cp /path/to/your/pbootcms/core/extend/ueditor/php/action_upload.php /path/to/your/pbootcms/core/extend/ueditor/php/action_upload.php.bak
  1. 编辑UEditor的上传处理文件:
vi /path/to/your/pbootcms/core/extend/ueditor/php/action_upload.php
  1. 在文件末尾,找到:
return json_encode($up->getFileInfo());

替换为:

$fileInfo = $up->getFileInfo();
// 如果存在云存储处理函数,则调用
if (function_exists('cloud_storage_process_url')) {
    $localFile = ROOT_PATH . $fileInfo['url'];
    $saveFile = $fileInfo['url'];
    $result = cloud_storage_process_url($localFile, $saveFile);
    if ($result && !empty($result)) {
        $fileInfo['url'] = $result;
    }
}
return json_encode($fileInfo);
  1. 保存文件并退出

避免重复上传问题

如果您发现在使用UEditor上传图片时出现图片被重复上传的问题,可以按照以下步骤解决:

  1. 编辑apps/common/plugin/CloudStorage/ueditor_patch.php文件,确保其中包含以下代码:
function cloud_storage_process_url($localFile, $saveFile) {
    // 检查文件是否存在
    if (!file_exists($localFile)) {
        return false;
    }
    
    // 检查云存储插件是否已安装
    if (!is_dir(APP_PATH . '/common/plugin/CloudStorage') || !file_exists(APP_PATH . '/common/plugin/CloudStorage/installed.lock')) {
        return false;
    }
    
    // 获取云存储配置
    $config = json_decode(file_get_contents(APP_PATH . '/common/plugin/CloudStorage/config.json'), true);
    if (!isset($config['enabled']) || $config['enabled'] != '1') {
        return false;
    }
    
    // 上传到云存储
    $hook = new \app\common\plugin\CloudStorage\CloudStorageHook();
    $result = $hook->fileUpload($localFile, $saveFile);
    
    // 如果上传成功,返回云存储URL
    if (is_array($result) && isset($result['url'])) {
        return $result['url'];
    }
    
    return false;
}
  1. 确保apps/common/plugin/CloudStorage/loader.php文件中已经包含了对ueditor_patch.php的引用:
// 加载UEditor补丁
require_once __DIR__ . '/ueditor_patch.php';

常见问题

文件上传失败

  • 检查云存储配置是否正确
  • 确认AccessKey/SecretKey等凭证是否有效
  • 检查Bucket/服务名称是否存在
  • 确认网络连接是否正常
  • 查看错误日志(runtime/logs/error.log)

文件无法访问

  • 检查自定义域名是否配置正确
  • 确认云存储平台的访问权限设置
  • 检查CDN缓存是否需要刷新

UEditor上传图片问题

  • 检查UEditor补丁是否正确应用
  • 确认云存储配置是否正确
  • 如果出现图片重复上传问题,检查ueditor_patch.php文件配置

调试方法

如果您遇到问题,可以启用调试日志:

  1. 在后台云存储配置页面,将"调试模式"设置为"启用"
  2. 查看runtime/logs/cloud_storage.log文件中的日志信息

卸载方法

  1. 在PbootCMS后台,进入"系统管理" -> "插件管理"
  2. 找到CloudStorage插件,点击"卸载"按钮

更新日志

v1.0.0 (2023-03-11)

  • 初始版本发布
  • 支持阿里云OSS、七牛云存储、腾讯云COS、又拍云存储
  • 提供简单易用的后台配置界面
  • 集成UEditor编辑器上传支持

作者信息

  • 作者:Leomusk
  • 邮箱:Leomusk@icloud.com
  • 网站:https://www.gezicode.cn

鸣谢

感谢以下开源项目:

  • PbootCMS
  • Aliyun OSS SDK for PHP
  • Qiniu SDK for PHP
  • Tencent Cloud COS SDK for PHP
  • Upyun SDK for PHP
PbootCMS是全新内核的开源企业建站系统, 系统以高效、简洁、强悍为开发目标,能够满足各类企业网站建设的需要。 系统采用高效、简洁的模板标签,只要懂HTML就可快速开发企业网站。 系统采用PHP语言开发,使用自主研发的高速MVVM多层开发框架及多级缓存技术。 系统默认采用Sqlite轻型数据库,放入PHP空间即可直接使用,可选Mysql、Pgsql等数据库,满足各类存储需求。系统采用响应式管理后台,满足各类设备随时管理的需要。 功能简介: 1、支持自定义模板 2、支持站点信息后台配置 3、支持无限极栏目 4、支持自定义内容模型 5、支持自定义内容字段 6、支持专题单页内容 7、支持列表内容管理 8、支持内容复制移动 9、支持自定义栏目地址 10、支持自定义内容地址 11、支持多语言区域建站 12、支持手机独立模板 13、支持手机版域名绑定 14、支持首页分页 15、支持页面SEO优化 16、支持在线留言 17、支持幻N组灯片轮播 18、支持友情链接 19、支持自定义表单 20、支持多条件筛选 21、支持多条件搜索 22、支持验证码开关 23、支持留言发送到多邮箱 24、支持API对接 25、支持小程序/APP开发 26、支持Ajax远程获取数据 27、支持自定义标签 28、支持全站伪静态 29、支持前端动态缓存 30、支持系统角色管理 31、支持完整角色权限管理 32、支持多用户在线管理 33、支持系统日志功能 34、支持数据库在线管理 系统安装: 发布的源码默认采用Sqlite数据库,放入PHP(大于等于5.3)空间即可直接使用。 如果需要启用Mysql版本,请导入目录下数据库文件\static\backup\sql\xxx.sql,同时请注意使用最新日期名字的脚本文件,并修改config/database数据库连接文件信息。 注意:如果导入的数据库名字不一致,请先修改sql文件中数据库名为自己的。 系统后台默认访问路径:http://ip/admin.php 账号:admin 密码:123456, 最近更新记录: PbootCMS V2.0.3 1、修复一处PHP7环境下的安全漏洞; 2、新增关闭留言、表单功能的开关; 3、新增缩略图未上传时自动获取文章图片; 4、其他问题修复与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值