快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
1🟢方案名称
2eo+对象存储 在线图床方案
3
4🟢功能需求
51.我可以通过密码登录这个oneimg.onedayxyy.cn域名后台,然后上传图片
62.图片可以默认转成avif/webp等格式
73.图床支持各种图片的预览
84.图床可以备份数据到其他对象存储或者git仓库(扩展功能)
9
10🟢项目背景
111.我这里可以提供的是 七牛云的key/scret/存储桶(这些我已经存在了cnb的secrt仓库了 https://cnb.cool/onedayxyy/secret/-/blob/main/envs.yml,或者放在eo pages里的kv里也可以),eo pages里的kv(或者eo云函数,eo边缘函数),一个oneimg.onedayxyy.cn域名(作为图床使用);
122.其实,我正在开发的这个oneblog后台已经实现了这图床功能,通过登录https://oneblogadmin.onedayxyy.cn/后台,即可上传到自己的图库。只是没实现图片压缩转换功能,这个功能应该通过eo/eo云函数也可以实现的(具体如何实现,你自己看着办,我不太懂)。另外,我希望这图床是单独的一个项目,而不是依赖在我这个oneblog图床后台。
13
14🟢建议
15图床可以参考开源项目piclist:
16开源文档:https://piclist.cn/
17开源项目:https://github.com/Kuingsmile/PicList
18说明:
19直接基于piclist项目二开成我需要的项目都行,如果你认为这个项目太重了,或者自己写代码页可以,反正你看着办;
20也可以参考我这个oneblog后台已经实现了的图床功能;
21
22
23🟢最后
24请按以上需求给我规划一些可行的方案,并给出意指导,我再考虑需要选择哪一个方案。 1🟢方案名称
2eo+对象存储 在线图床方案
3
4🟢功能需求
51.我可以通过密码登录这个oneimg.onedayxyy.cn域名后台,然后上传图片
62.图片可以默认转成avif/webp等格式
73.图床支持各种图片的预览
84.图床可以备份数据到其他对象存储或者git仓库(扩展功能)
9
10🟢项目背景
111.我这里可以提供的是 七牛云的key/scret/存储桶(这些我已经存在了cnb的secrt仓库了 https://cnb.cool/onedayxyy/secret/-/blob/main/envs.yml,或者放在eo pages里的kv里也可以),eo pages里的kv(或者eo云函数,eo边缘函数),一个oneimg.onedayxyy.cn域名(作为图床使用);
122.其实,我正在开发的这个oneblog后台已经实现了这图床功能,通过登录https://oneblogadmin.onedayxyy.cn/后台,即可上传到自己的图库。只是没实现图片压缩转换功能,这个功能应该通过eo/eo云函数也可以实现的(具体如何实现,你自己看着办,我不太懂)。另外,我希望这图床是单独的一个项目,而不是依赖在我这个oneblog图床后台。
13
14🟢建议
15图床可以参考开源项目piclist:
16开源文档:https://piclist.cn/
17开源项目:https://github.com/Kuingsmile/PicList
18说明:
19直接基于piclist项目二开成我需要的项目都行,如果你认为这个项目太重了,或者自己写代码页可以,反正你看着办;
20也可以参考我这个oneblog后台已经实现了的图床功能;
21
22
23🟢最后
24请按以上需求给我规划一些可行的方案,并给出意指导,我再考虑需要选择哪一个方案。你已经具备大半能力,缺的主要是「独立项目」和「格式转换」:
| 能力 | 现状 |
|---|---|
| 密码登录 | [oneblog-admin/functions/index.js](oneblog-admin/functions/index.js) JWT + Cookie |
| 上传到七牛 | [oneblog-admin/functions/lib/qiniu.js](oneblog-admin/functions/lib/qiniu.js)(EO Web Crypto,无 Node 依赖) |
| 图库/预览/相册 | [admin-frontend/src/views/Content/Gallery.vue](admin-frontend/src/views/Content/Gallery.vue) + API /api/v1/gallery/* |
| 元数据 | EO KV:gallery_items / gallery_albums |
| 密钥 | Pages 环境变量或 KV(QINIU_AK/SK/BUCKET/DOMAIN),与 CNB secret 仓库可对齐 |
| 转码 | 未实现 |
公开访问域名建议继续用现有 CDN 域名(如 img.onedayxyy.cn / oneblogoss.onedayxyy.cn),oneimg.onedayxyy.cn 专做管理后台;也可同域分路径(/admin + /i/*),但拆域名更清晰。
这是方案差异的核心,不是「写不写代码」的问题:
访问侧自适应(推荐优先)
原图照常存;访问时由 EdgeOne 图片即时处理 或 七牛 CDN 格式自适应 按浏览器 Accept 返回 AVIF/WebP。
上传后落盘转码(七牛 pfop / imageMogr2)
上传策略带 persistentOps,或上传后调 pfop:imageMogr2/format/avif|saveas/...。
.avif,与博客现有写法一致边缘函数里用 sharp 等本地转码
在 EO 边缘/云函数内解码再编码。
建议落地策略: MVP 用路径 1;若你强烈要求「上传后文件名就是 .avif」,再加路径 2。
形态: 新仓库(或 monorepo 新目录 oneimg/),独立 EO Pages 项目,绑定 oneimg.onedayxyy.cn。
组成:
qiniu.js + 密码登录 + /api/upload /api/list /api/delete工作量: 约 3–7 天(有现成代码) 匹配度: 与你现有技术栈完全一致,真正「独立于 oneblog」,又能复用经验。
形态: 继续用 PicList 上传到七牛;CDN 套 EO/ESA;Web 端只做只读相册或极简密码上传页。
匹配度: 你文档里已有「七牛 + CDN + PicList」实践,上传体验好。 缺口: 需求 1「密码登录后台上传/管理」不完整;备份、统一预览后台要另做。 结论: 适合当 客户端补充,不宜作为主方案。
形态: Fork PicList(Electron + PicGo 生态)。
问题: PicList 本质是桌面客户端,不是 EO Pages 可部署的 Web 服务;要改成 oneimg.onedayxyy.cn 后台等于重写部署模型。
结论: 过重,不建议。需要桌面一键上传时,直接装官方 PicList 连同一七牛桶即可。
形态: 在现有 oneblogadmin 图库上开 EO/七牛自适应或 pfop。
优点: 改动最小。 缺点: 明确违背「希望图床是单独项目」。 结论: 仅作临时过渡;长期仍应抽到方案 A。
oneimg.onedayxyy.cn<img> + 灯箱即可;GIF/动图预览原图,静图走自适应xxx.avif,返回转换后 URLoneimg/ vs gallery/),或新开桶更干净选 方案 A + 访问侧自适应转码;PicList 仅作本机上传工具;备份放二期;若必须「文件本身变成 avif」,再叠加七牛 pfop。
public/ + functions/ + edgeone.json)qiniu.js + 上传/列表 APIoneimg 域名与七牛密钥6.(可选)pfop 落盘与备份任务
确认采用方案 A(或你指定其他方案)后,再进入具体编码与仓库拆分。
基于你已有的 EO Pages + 七牛能力,推荐新建轻量独立图床项目 oneimg(剥离 oneblog 图库核心),转码优先走访问侧自适应,备份作为二期扩展;PicList 仅作桌面客户端,不作为服务端底座。
1🟢细节
2oneimg.onedayxyy.cn 图床域名
3oneimgadmin.onedayxyy.cn 图床管理后台域名
4
5
6仓库名称:
7oneimg
8
9---
10转码方式:(直接选择这种,需确认是否收费??)
11上传后落盘转码(七牛 pfop / imageMogr2)
12上传策略带 persistentOps,或上传后调 pfop:imageMogr2/format/avif|saveas/...。
13
14优点:链接可固定为 .avif,与博客现有写法一致
15缺点:异步、回调/轮询、高级压缩可能计费、实现稍重
16
17---
18方案 A(推荐):轻量独立「oneimg」= 剥离 oneblog 图库 + EO + 七牛
19形态: 新仓库(或 monorepo 新目录 oneimg/),独立 EO Pages 项目,绑定 oneimg.onedayxyy.cn。
20
21组成:
22 前端:从 Gallery / Upload 精简出登录 + 上传 + 列表预览 + 删除(Vue 或更轻的单页均可)
23 后端:复用/精简 qiniu.js + 密码登录 + /api/upload /api/list /api/delete
24 存储:七牛桶;元数据:EO KV(可只存索引,也可列表直接打七牛 list API)
25 转码:EO/七牛 访问侧自适应(一期);可选二期 pfop 落盘
26 备份:二期定时同步到第二桶或 Git LFS/裸文件仓
27
28工作量: 约 3–7 天(有现成代码)
29匹配度: 与你现有技术栈完全一致,真正「独立于 oneblog」,又能复用经验。
30
31---问题
1就选择 方案 A(推荐):轻量独立「oneimg」= 剥离 oneblog 图库 + EO + 七牛。
2
3oneimg.onedayxyy.cn 图床域名
4oneimgadmin.onedayxyy.cn 图床管理后台域名
5
6新cnb仓库名称:oneimg
7
8!
9唯一注意的是:我需要图片必须转为avif/webp。
10转码方式:(直接选择这种)
11上传后落盘转码(七牛 pfop / imageMogr2)
12上传策略带 persistentOps,或上传后调 pfop:imageMogr2/format/avif|saveas/...。
13
14优点:链接可固定为 .avif,与博客现有写法一致
15缺点:异步、回调/轮询、高级压缩可能计费、实现稍重
16
17但我不知道这个转换会收费不?
18
19!回答
| 项 | 选择 |
|---|---|
| 总方案 | 方案 A:轻量独立 oneimg = 剥离 oneblog 图库 + EO + 七牛 |
| CNB 仓库 | oneimg(新仓,不挂在 hugo-teek-private) |
| 图床访问域名 | oneimg.onedayxyy.cn |
| 管理后台域名 | oneimgadmin.onedayxyy.cn |
| 转码 | 必须:上传后七牛 pfop / imageMogr2 落盘 |
| 默认输出 | 固定链接为 .avif(与博客现有写法一致);可选同时产出 .webp |
| 备份 | 二期扩展 |
会,但个人博客量级通常极低;且 pfop 落盘是「上传时计一次」,不是每次访问都计。
imageMogr2/format/avif)——明确按「图片高级压缩」计费按输出分辨率档位 × 处理次数(千次):
| 输出规格 | 约价(中国大陆) |
|---|---|
| 800×600 及以下 | 0.075 元/千次 |
| 1600×1200 及以下 | 0.3 元/千次 |
| 3200×2400 以下 | 1.6 元/千次 |
| 6400×4800 以下 | 5.4 元/千次 |
直觉换算(个人站):
100 × 0.3 / 1000 ≈ 0.03 元0.3 元另存后的 .avif 再被浏览时,不再因转码重复收费(只剩存储 + CDN/回源流量,与现在图床类似)。
imageMogr2/format/webp)WebP 属于普通格式转换,走 imageMogr2 体系,不是「图片高级压缩-AVIF」那一档。官方价目里 imageMogr2 与 imageView2 等同组,有较大免费处理量(按处理数据量计,非 AVIF 那种按千次档位)。相对 AVIF 通常更便宜或接近免费额度内。
.avif 写法);WebP 做成可选开关,避免双倍处理费。_raw/ 前缀便于失败重试,稳定后可删原图省存储。价格以七牛控制台/账单为准,上线后用小流量实测一笔即可确认。
raw/2026/xxx.png)。imageMogr2/format/avif|saveas/<EncodedEntryURI>(上传策略 persistentOps,或上传成功后调 pfop API)。persistentId 或接收 persistentNotifyUrl 回调。https://oneimg.onedayxyy.cn/.../xxx.avif;后台预览与复制均用该地址。优先实现路径:上传后调 pfop(逻辑清晰、易排错);稳定后再考虑写入上传策略 persistentOps 减少一次 API。
[oneblog-admin/functions/lib/qiniu.js](oneblog-admin/functions/lib/qiniu.js)[oneblog-admin/functions/index.js](oneblog-admin/functions/index.js) JWT + Cookie[admin-frontend/src/views/Content/Gallery.vue](admin-frontend/src/views/Content/Gallery.vue)oneblog-admin/functions/[[default]].js 中 /api/v1/gallery/*新仓只保留图床所需最小集,不带文章/Git/Hugo 配置逻辑。
| 域名 | 用途 | 部署 |
|---|---|---|
oneimgadmin.onedayxyy.cn | 密码后台 | EO Pages(新仓 oneimg) |
oneimg.onedayxyy.cn | 图片公网 URL | 七牛 CDN 加速域名(或 EO 回源七牛),对外只读 |
密钥:QINIU_AK/SK/BUCKET/DOMAIN、后台密码 → EO Pages 环境变量或 KV;可与 CNB secret envs.yml 对齐。
存储桶:新建专用桶更干净;若共用现有桶,统一前缀 oneimg/。
oneimg + EO Pages 骨架oneimgadmin).avif」oneimg,初始化 EO Pages 项目oneimgadmin / oneimg 并端到端验收已锁定方案 A:新建 CNB 仓库 oneimg,独立 EO Pages 管理后台(oneimgadmin)+ 图床访问域名(oneimg),七牛存储,上传后经 pfop/imageMogr2 落盘为 AVIF(可选 WebP)。备份为二期。
已确认选方案 A,并锁定 pfop 落盘转码。正在查七牛 AVIF/WebP
会收费,但个人图床量级通常可以忽略;而且是「每张图转码时收一次」,不是每次打开网页都收。
七牛把 imageMogr2/format/avif 算作图片高级压缩,按输出分辨率档位 × 次数计费(官方价目):
| 输出规格 | 约价 |
|---|---|
| ≤800×600 | 0.075 元/千次 |
| ≤1600×1200 | 0.3 元/千次 |
| ≤3200×2400 | 1.6 元/千次 |
| ≤6400×4800 | 5.4 元/千次 |
举例:一个月转 100 张、大多在 1600×1200 档 → 大约 3 分钱;1000 张 → 大约 3 毛。
转完存成 .avif 后,访问只走存储/流量,不会再为转码重复扣费。
走普通 imageMogr2 格式转换,不是 AVIF 那档高级压缩价,一般更便宜或落在免费额度里。建议默认只落盘 AVIF(和博客现有链接一致),WebP 做成可选,避免一张图转两次。
edgeone.json、functions/、public/DEPLOY.md、README.md建 CNB 仓并推送(当前 Token 缺 group-resource:rw,无法代建)
见 CREATE_CNB_REPO.md:在 cnb.cool 创建 onedayxyy/oneimg,然后:
cd D:\oneimg
git push -u origin master
按 DEPLOY.md 绑定域名
oneimgadmin.onedayxyy.cn → EO Pages + KV(ADMIN_KV) + 环境变量oneimg.onedayxyy.cn → 七牛 CDN(QINIU_DOMAIN)上传成功后复制到的链接形态为:https://oneimg.onedayxyy.cn/oneimg/.../xxx.avif。

日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白