- 腾讯云 COS 存储:直接上传文件到腾讯云对象存储,节省服务器空间
- 批量上传:支持同时上传多个文件
- 附件批量插入、复制:一键批量插入或者复制选中的附件到编辑器
- 无侵入式:不修改 Typecho 核心文件,使用标准钩子机制
- 数据独立:独立的数据表存储附件信息
- PHP:>= 7.0
- Typecho:>= 1.2.0
- MySQL:>= 5.5
- 腾讯云 COS:需要有腾讯云账号和 COS 存储桶
-
下载插件
cd /path/to/typecho/usr/plugins/ git clone https://github.com/YosreLab/CloudAttach.git -
启用插件
- 登录 Typecho 后台
- 进入「控制台」→「插件」
- 找到「CloudAttach」插件,点击「启用」
-
配置插件
- 点击插件的「设置」按钮
- 填写腾讯云 COS 配置信息(详见下方配置说明)
- 点击「保存设置」
-
测试连接
- 在插件设置页面点击「测试 COS 配置」按钮
- 确认连接成功后即可开始使用
| 配置项 | 说明 | 示例 |
|---|---|---|
| Secret ID | 腾讯云 API 密钥 ID | AKIDxxxxxxxxxxxxxxxx |
| Secret Key | 腾讯云 API 密钥 Key | xxxxxxxxxxxxxxxx |
| 存储地域 | COS 存储桶所在地域 | ap-guangzhou |
| 存储桶名称 | COS 存储桶名称 | mybucket-1234567890 |
| 配置项 | 说明 | 默认值 |
|---|---|---|
| CDN 域名 | 自定义 CDN 加速域名 | 留空使用 COS 默认域名 |
| 存储路径 | COS 中的存储路径 | usr/uploads |
- 登录 腾讯云控制台
- 进入「访问管理」→「访问密钥」→「API 密钥管理」
- 创建或查看现有密钥
- 复制 SecretId 和 SecretKey
- 登录 COS 控制台
- 点击「存储桶列表」→「创建存储桶」
- 填写存储桶名称,选择地域
- 设置访问权限(建议:公有读私有写)
- 创建完成后复制存储桶名称
在文章编辑页面,点击右下角的 ☁️ 云朵图标,即可打开附件管理面板。
方式一:点击上传
- 点击上传区域
- 在文件选择对话框中选择一个或多个文件
- 等待上传完成
方式二:拖拽上传
- 从文件管理器中选择文件
- 拖拽到上传区域
- 松开鼠标,自动开始上传
筛选附件
- 点击顶部的分类标签(全部/图片/文档/压缩包/其他)
- 快速筛选不同类型的附件
多选操作
- 勾选需要操作的附件(复选框)
- 点击「全选」可选中当前页所有附件
- 点击「取消」可取消所有选中
- 选中后会显示批量操作工具栏
批量插入
- 选中多个附件后,点击「批量插入」
- 所有选中的附件会以 Markdown 格式插入到编辑器
- 每个附件占一行
- 图片自动使用
格式 - 其他文件使用
[文件名](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 个文件
- 队列管理:自动管理上传队列
- 进度追踪:实时显示每个文件的上传进度
- 错误重试:上传失败自动继续下一个
- 状态同步:前后端状态实时同步
问题:点击上传后没有反应或提示失败
解决方案:
- 检查 COS 配置是否正确(Secret ID、Secret Key、存储桶名称)
- 确认存储桶的访问权限设置为「公有读私有写」
- 检查服务器是否能访问腾讯云 API
- 查看浏览器控制台是否有错误信息
问题:上传成功但文件无法访问
解决方案:
- 检查 COS 存储桶的访问权限
- 确认 CDN 域名配置是否正确
- 检查文件 URL 是否可以直接访问
问题:启用插件时提示错误
解决方案:
- 确认 PHP 版本 >= 7.0
- 确认 Typecho 版本 >= 1.2.0
- 检查数据库权限,确保可以创建表
- 查看 Typecho 错误日志
问题:批量上传时部分文件一直显示「等待中」
解决方案:
- 刷新页面重新上传
- 检查网络连接是否稳定
- 尝试减少同时上传的文件数量
- 检查文件大小是否超过限制
新增功能
- ✨ 支持腾讯云 COS 对象存储
- ✨ 批量上传功能(最多并发 3 个文件)
- ✨ 上传队列可视化管理
- ✨ 实时上传进度显示
- ✨ 多选功能和批量操作
- ✨ 文件分类筛选
- ✨ 分页浏览附件
- ✨ 图片预览功能
界面优化
- 🎨 现代化卡片式布局
- 🎨 侧边栏滑出式面板
- 🎨 简洁的操作按钮
- 🎨 流畅的动画效果
用户体验
- 🚀 静默插入和复制操作
- 🚀 拖拽上传支持
- 🚀 批量插入每行一个链接
- 🚀 完整文件名显示
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建新的功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
- 遵循 PSR-4 编码规范
- 使用有意义的变量和函数名
- 添加必要的注释
- 保持代码简洁清晰
本项目采用 MIT License 开源协议。
- 作者:YosreLab
- 邮箱:yellouu@163.com
- GitHub:@YosreLab
如果这个插件对您有帮助,请给个 ⭐ Star 支持一下!
Made with ❤️ by YosreLab