Skip to content

chonghua/CloudAttach

 
 

Repository files navigation

CloudAttach - Typecho附件管理插件

Version Typecho PHP License

一个功能强大的 Typecho 插件,支持对象存储(暂时仅支持COS),提供现代化的附件管理界面和批量上传功能。

功能特性安装说明使用指南配置说明更新日志


✨ 功能特性

🚀 核心功能

  • 腾讯云 COS 存储:直接上传文件到腾讯云对象存储,节省服务器空间
  • 批量上传:支持同时上传多个文件
  • 附件批量插入、复制:一键批量插入或者复制选中的附件到编辑器
  • 无侵入式:不修改 Typecho 核心文件,使用标准钩子机制
  • 数据独立:独立的数据表存储附件信息

📦 安装说明

环境要求

  • PHP:>= 7.0
  • Typecho:>= 1.2.0
  • MySQL:>= 5.5
  • 腾讯云 COS:需要有腾讯云账号和 COS 存储桶

安装步骤

  1. 下载插件

    cd /path/to/typecho/usr/plugins/
    git clone https://github.com/YosreLab/CloudAttach.git
  2. 启用插件

    • 登录 Typecho 后台
    • 进入「控制台」→「插件」
    • 找到「CloudAttach」插件,点击「启用」
  3. 配置插件

    • 点击插件的「设置」按钮
    • 填写腾讯云 COS 配置信息(详见下方配置说明)
    • 点击「保存设置」
  4. 测试连接

    • 在插件设置页面点击「测试 COS 配置」按钮
    • 确认连接成功后即可开始使用

⚙️ 配置说明

必填配置

配置项 说明 示例
Secret ID 腾讯云 API 密钥 ID AKIDxxxxxxxxxxxxxxxx
Secret Key 腾讯云 API 密钥 Key xxxxxxxxxxxxxxxx
存储地域 COS 存储桶所在地域 ap-guangzhou
存储桶名称 COS 存储桶名称 mybucket-1234567890

可选配置

配置项 说明 默认值
CDN 域名 自定义 CDN 加速域名 留空使用 COS 默认域名
存储路径 COS 中的存储路径 usr/uploads

获取腾讯云密钥

  1. 登录 腾讯云控制台
  2. 进入「访问管理」→「访问密钥」→「API 密钥管理」
  3. 创建或查看现有密钥
  4. 复制 SecretId 和 SecretKey

创建 COS 存储桶

  1. 登录 COS 控制台
  2. 点击「存储桶列表」→「创建存储桶」
  3. 填写存储桶名称,选择地域
  4. 设置访问权限(建议:公有读私有写)
  5. 创建完成后复制存储桶名称

🎯 使用指南

打开附件管理面板

在文章编辑页面,点击右下角的 ☁️ 云朵图标,即可打开附件管理面板。

上传文件

方式一:点击上传

  1. 点击上传区域
  2. 在文件选择对话框中选择一个或多个文件
  3. 等待上传完成

方式二:拖拽上传

  1. 从文件管理器中选择文件
  2. 拖拽到上传区域
  3. 松开鼠标,自动开始上传

管理附件

筛选附件

  • 点击顶部的分类标签(全部/图片/文档/压缩包/其他)
  • 快速筛选不同类型的附件

多选操作

  1. 勾选需要操作的附件(复选框)
  2. 点击「全选」可选中当前页所有附件
  3. 点击「取消」可取消所有选中
  4. 选中后会显示批量操作工具栏

批量插入

  • 选中多个附件后,点击「批量插入」
  • 所有选中的附件会以 Markdown 格式插入到编辑器
  • 每个附件占一行
  • 图片自动使用 ![文件名](URL) 格式
  • 其他文件使用 [文件名](URL) 格式

批量复制

  • 选中多个附件后,点击「批量复制」
  • 所有选中附件的 URL 会复制到剪贴板
  • 每个 URL 占一行

单文件操作

  • 插入:将文件插入到编辑器光标位置
  • 复制:复制文件 URL 到剪贴板
  • 删除:从 COS 和数据库中删除文件

📊 文件结构

CloudAttach/
├── Plugin.php              # 插件主文件(主要版本)
├── Plugin_CloudAttach.php  # 插件备用文件
├── handler.php             # AJAX 请求处理
├── Action.php              # 动作处理类
├── CosUploader.php         # COS 上传类
├── lib/
│   └── CosUploader.php     # COS SDK 封装
└── README.md               # 说明文档

🔧 技术实现

前端技术

  • 纯原生 JavaScript:无任何第三方依赖
  • Flexbox 布局:现代化的响应式布局
  • CSS3 动画:流畅的过渡效果
  • XMLHttpRequest:异步文件上传
  • Clipboard API:剪贴板操作

后端技术

  • Typecho 钩子系统:使用标准钩子机制
  • 腾讯云 COS SDK:官方 PHP SDK
  • MySQL 数据表:独立的附件数据表
  • RESTful API:标准的 API 接口设计

核心特性

  • 并发上传控制:最多同时上传 3 个文件
  • 队列管理:自动管理上传队列
  • 进度追踪:实时显示每个文件的上传进度
  • 错误重试:上传失败自动继续下一个
  • 状态同步:前后端状态实时同步

🐛 常见问题

上传失败

问题:点击上传后没有反应或提示失败

解决方案

  1. 检查 COS 配置是否正确(Secret ID、Secret Key、存储桶名称)
  2. 确认存储桶的访问权限设置为「公有读私有写」
  3. 检查服务器是否能访问腾讯云 API
  4. 查看浏览器控制台是否有错误信息

文件无法显示

问题:上传成功但文件无法访问

解决方案

  1. 检查 COS 存储桶的访问权限
  2. 确认 CDN 域名配置是否正确
  3. 检查文件 URL 是否可以直接访问

插件无法启用

问题:启用插件时提示错误

解决方案

  1. 确认 PHP 版本 >= 7.0
  2. 确认 Typecho 版本 >= 1.2.0
  3. 检查数据库权限,确保可以创建表
  4. 查看 Typecho 错误日志

批量上传卡住

问题:批量上传时部分文件一直显示「等待中」

解决方案

  1. 刷新页面重新上传
  2. 检查网络连接是否稳定
  3. 尝试减少同时上传的文件数量
  4. 检查文件大小是否超过限制

📝 更新日志

v1.0.0 (2025-11-30)

新增功能

  • ✨ 支持腾讯云 COS 对象存储
  • ✨ 批量上传功能(最多并发 3 个文件)
  • ✨ 上传队列可视化管理
  • ✨ 实时上传进度显示
  • ✨ 多选功能和批量操作
  • ✨ 文件分类筛选
  • ✨ 分页浏览附件
  • ✨ 图片预览功能

界面优化

  • 🎨 现代化卡片式布局
  • 🎨 侧边栏滑出式面板
  • 🎨 简洁的操作按钮
  • 🎨 流畅的动画效果

用户体验

  • 🚀 静默插入和复制操作
  • 🚀 拖拽上传支持
  • 🚀 批量插入每行一个链接
  • 🚀 完整文件名显示

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

如何贡献

  1. Fork 本仓库
  2. 创建新的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

代码规范

  • 遵循 PSR-4 编码规范
  • 使用有意义的变量和函数名
  • 添加必要的注释
  • 保持代码简洁清晰

📄 许可证

本项目采用 MIT License 开源协议。


📮 联系方式


如果这个插件对您有帮助,请给个 ⭐ Star 支持一下!

Made with ❤️ by YosreLab

About

一个功能强大的 Typecho 插件,支持对象存储(暂时仅支持COS),提供现代化的附件管理界面和批量上传功能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PHP 100.0%