官方公告 纸鱼 APP 正式版发布! 查看详情
应用商店 插件

七牛云对象存储

将媒体文件上传到七牛云 Kodo 对象存储,支持区域选择、自定义 CDN 域名和云端文件删除。存储空间需开启公开读取。

价格免费
请在系统应用商店安装 登录后收藏
最新版本1.0.0
PHP 兼容8.1
最近更新2026-10-24
下载次数1
七牛云对象存储 预览图
把纸鱼博客的媒体文件交给七牛云 Kodo 托管。启用后,后台媒体库上传、文章封面、正文插图都继续走原来的上传入口,文件落到七牛云,站点只保存 CDN 地址——不用改主题,也不用改核心文件。

插件介绍

纸鱼博客默认把上传文件存在服务器的 public/uploads。站点图片一多,备份体积、磁盘占用和访问速度都会成为问题。这个插件把上传流程接到七牛云对象存储:文件通过服务端签名直传 Kodo,前台通过绑定的 CDN 域名访问,服务器的磁盘和带宽只承担页面本身。

上传凭证在服务端生成,AccessKey 和 SecretKey 不会出现在浏览器里。云端上传失败时核心会自动回退本地存储,不会让一次上传整体失败;失败原因写入 runtime/error.log,方便排查配置问题。

主要功能

  • 接管全部上传入口:媒体库、文章封面、正文插图、页面图片共用核心上传接口,启用即生效。
  • 服务端签名:PutPolicy 上传凭证由插件生成,密钥不下发到前端。
  • 区域可选:支持华东-浙江、华北-河北、华南-广东、华东-浙江2、北美-洛杉矶、亚太-新加坡、亚太-河内、亚太-胡志明市,按 Bucket 所在区域选择上传和删除线路。
  • 自定义 CDN 域名:返回并入库的是绑定域名的完整地址,可带 https 和自定义端口。
  • 云上删除:在媒体库删除文件时同步删除七牛云对象;只处理当前 CDN 域名下的地址,不会误删其他存储的文件。
  • 连接测试:在插件设置页点“测试存储连接”,会真实上传一个临时文件再删除,上传和删除两条链路一起验证。
  • 失败回退:七牛云不可达、签名错误或返回非 2xx 时回退本地存储,上传不中断。
  • 路径可控:对象默认落在 前缀/年/月/随机名.扩展名,前缀可留空。

使用前准备

  1. 登录七牛云控制台,进入「对象存储 Kodo」创建存储空间(Bucket),记下空间名称和所属区域。
  2. 在存储空间的「域名管理」里绑定一个已备案的 CDN 域名,并按七牛云提示完成 CNAME 解析。
  3. 确认存储空间的访问控制为公开读取。插件返回的是普通 CDN 地址,私有空间需要每次访问重新签名,当前版本不支持。
  4. 在「密钥管理」里获取 AccessKey 和 SecretKey。

插件设置

设置项说明
AccessKey / SecretKey七牛云「密钥管理」中的账号密钥,只保存在服务端。
存储空间 Bucket例如 pafish-media,必须与密钥同账号。
存储区域与 Bucket 所属区域一致。区域选错时上传通常返回 400/401。
CDN 加速域名绑定到 Bucket 的访问域名,例如 https://cdn.example.com。只填域名,不要带路径、查询参数或末尾的 /key。
对象路径前缀默认 pafish,最终对象名形如 pafish/2026/10/1a2b3c4d5e6f7a8b9c0d.jpg;留空表示放在根目录。
自定义上传域名一般留空,按区域自动使用 up-*.qiniup.com。使用上传代理或特殊线路时才需要填写。

保存后点「测试存储连接」。测试成功会显示 Bucket 和 CDN 域名;如果提示“上传成功,但删除测试失败”,说明上传凭证没问题,问题在管理 API 的签名、区域线路或服务器出网。

注意事项

  • 只迁移新上传:启用前已经存在的本地图片仍留在 public/uploads,插件不会搬运历史文件;需要的话自行上传到七牛云并替换正文地址。
  • 同时只生效一个存储插件:核心按插件启用顺序取第一个声明存储能力且已启用的插件。装了这个插件后,请停用缤纷云等其他存储后端,避免实际写入的不是你以为的那一个。
  • 停用插件不会删云端文件:停用后新上传回到本地,已有文章的七牛云地址仍然可以访问;但在媒体库删除旧文件时不会再调用七牛云删除接口。
  • 删除依赖域名匹配:只有 URL 的 host 与当前配置的 CDN 域名一致时才会删除云端对象;更换域名后,旧域名下的文件需要到七牛云控制台手动清理。
  • CDN 域名必须已经生效:上传成功只代表对象写进了 Bucket。域名没有绑定、CNAME 没生效或空间不是公开读取时,前台图片会 404,而插件本身不会报错。
  • 服务器时间要准确:上传凭证和管理凭证都带时间戳,服务器时间偏差过大会被七牛云拒绝(通常是 401)。
  • 建议使用 HTTPS:CDN 域名和自定义上传域名都支持 http,但后台在 HTTPS 下混用 http 资源会遇到浏览器拦截。

常见问题

上传后图片 404

先到七牛云控制台确认对象确实存在,再检查 CDN 域名是否绑定、CNAME 是否生效、Bucket 是否为公开读取。插件返回的地址由「CDN 加速域名 + 对象路径」拼成,域名填错时上传仍然会成功。

提示“上传失败(HTTP 401/403)”

检查 AccessKey、SecretKey、Bucket 是否属于同一账号,区域是否选对,以及服务器时间是否准确。403 也可能是上传凭证的 scope 与表单里的 key 不一致,正常由插件生成时不会出现。

提示“上传成功,但删除测试失败”

上传和删除走的是不同域名:上传是 up-*.qiniup.com,删除是 rs-*.qiniuapi.com。确认服务器能访问管理域名,并检查区域是否与 Bucket 一致。插件在区域主机不可达时会回退 rs.qiniuapi.com。

日志里出现“云存储上传失败,回退本地”

说明七牛云这一步抛错了,但上传本身没有失败,文件落在了本地。到 runtime/error.log 搜索 [pafish-plugin] 云存储上传失败 查看具体原因,修好配置后重新上传即可。