2026 图床 API 技术规格完整指南:B2B 采购前必检 15 项 checklist
企业采购图床和采购数据库一样,不是看看主页就能做决定的事。
去年团队让我评估一个替代方案,我把过去三年线上踩过的坑全部整理成了一份 checklist。这份文档不是用来比谁 CDN 节点多,而是拿去贴到 RFP 里、让供应商逐项回答"Yes / No / Partial"的那种表格。表面上图床产品都长一样,底层架构差别非常大。
如果你只想看哪家便宜、哪家免费,建议先去看 免费图床服务完整比较 或 Imgur 替代方案。这篇是给技术主管、SaaS 采购负责人、DevOps 看的。
15 项 RFP checklist(直接复制进采购文件)
下面的表格是我实际用在评估表里的版本。每一项都有验证方式——不是问"你们支持吗?"就算通过,那种问法供应商一律答 Yes。
| # | 规格项目 | 验证方式 | 及格标准 |
|---|---|---|---|
| 1 | S3 API 兼容性 | 跑 s3api list-objects-v2 --prefix |
响应 schema 与 AWS 一致 |
| 2 | Multipart Upload | 上传 500MB 文件,中断后 resume | 支持 part retry |
| 3 | Pre-signed URL | 生成一组 15 分钟有效 URL 并验签 | HMAC-SHA256,可设 TTL |
| 4 | Webhook 事件 | 触发 upload/delete 事件 | HMAC 签名 + retry 机制 |
| 5 | Rate Limit 策略 | 跑 burst 测试 | 回 429 + Retry-After header |
| 6 | SLA 条款 | 读 MSA 合同 | ≥99.9%,有 service credit |
| 7 | 可用区 / 多区域 | 问 region list | ≥2 region,跨区同步 |
| 8 | Egress 计费 | 要 pricing sheet | 单价透明,有 tier 折扣 |
| 9 | 图片处理流水线 | 测 on-the-fly transform | 支持 WebP/AVIF、URL 参数 |
| 10 | CDN 边缘节点 | 跑全球 ping 测试 | ≥50 PoP,含亚太节点 |
| 11 | EXIF / Metadata 控制 | 上传带 GPS 的照片 | 可选择性 strip |
| 12 | 认证方式 | 看 API 文档 | 支持 OAuth2 + API Key 轮替 |
| 13 | 审计日志 | 问 log retention | ≥90 天,可导出 |
| 14 | Compliance 认证 | 要 SOC 2 / ISO 27001 报告 | 至少一张 |
| 15 | 数据驻留与删除 | 问 DPA 条款 | 可指定 region,支持硬删 |
不要只勾 Yes/No。每一项都要对方附上文档链接或技术验证步骤。没附的那些,十有八九是"在规划中但还没做"。
B2B 图床选型和个人用户完全是两回事
个人用户在乎"能上传吗?链接好分享吗?"
企业在乎的是另一串问题。合同条款写不写 SLA?API 被打满时 rate limit 怎么退化?Egress 费用会不会在某个月突然翻倍?个保法审计官问 EXIF 数据留多久时回不回得出来?
说白了,B2B 采购图床本质是在买三件事:可预测的成本曲线、可验证的系统保证、可集成的协议接口。上面 15 项就是围绕这三件事展开的。
线上炸过一次以后才学乖:免费方案能撑 demo,撑不了正式流量。
核心规格的实现细节
表格只是骨架。下面几项是合同谈判时最容易被供应商含糊过去的地方。
S3 兼容性不是一句话的事
"我们 S3 兼容"是图床供应商最爱说的一句话。但 S3 API 有超过 200 个 operation,真正要验证的是你会用到的那一组。
最基本的 GetObject、PutObject 谁都有。往下走:
# 测 multipart
aws s3api create-multipart-upload --bucket test --key big.mp4 \
--endpoint-url https://vendor.example.com
# 测 versioning
aws s3api put-bucket-versioning --bucket test \
--versioning-configuration Status=Enabled
# 测 lifecycle
aws s3api put-bucket-lifecycle-configuration ...
实测下来,三项全能通过的不到六成。尤其是 bucket lifecycle 和 object lock,少了这两个,合规审计会出事。
Pre-signed URL 的 TTL 与签名算法
这是 B2B 场景最常用的认证方式。终端用户没有你的 credentials,你发一张限时票给他。
底层原理是 HMAC-SHA256,把 method、path、expiry、headers 打包成 string to sign,用 secret key 签名。好的供应商会给你:
- 可调 TTL(1 分钟到 7 天都行)
- 可锁定来源 IP(
aws:SourceIp条件) - 可限制 HTTP method
- 支持 SigV4(SigV2 已过时,还在用 SigV2 的直接淘汰)
差的供应商会给你一条"永不过期的 public URL"然后说这叫 signed。这就是为什么要把 Pre-signed URL 写进 RFP。
Webhook 签名验证——踩过这个坑
Webhook 是事件驱动架构的关键。上传完成、病毒扫描完成、转码完成,都该推一个事件过来。
但 webhook 的安全性是供应商最容易偷工减料的地方。我见过的烂实现包括:
- 没有任何签名,裸 POST
- 有签名但 secret 写在 query string
- 有签名但用 MD5
- 有签名但没附 timestamp,可以被 replay
合格的 webhook 必须:
- HMAC-SHA256 签名,放在
X-Signatureheader - 附
X-Timestamp,超过 5 分钟的请求拒收 - 失败自动 retry(指数退避,至少 3 次)
- 提供 dead letter queue 或 replay API
验证 webhook 的 Go 代码大致如下:
func verifyWebhook(body []byte, sig, ts, secret string) bool {
if time.Since(parseTS(ts)) > 5*time.Minute {
return false
}
mac := hmac.New(sha256.New, []byte(secret))
mac.Write([]byte(ts + "." + string(body)))
expected := hex.EncodeToString(mac.Sum(nil))
return hmac.Equal([]byte(sig), []byte(expected))
}
少了 timestamp 那段,replay 攻击直接打穿你整个事件系统。
Rate Limit 的两层要求
Rate limit 要看两层:你的配额是多少,以及超过配额会发生什么。
配额好谈,多半是 per-second / per-minute 写在 plan 里。真正重要的是超限行为:
| 行为 | 合格性 |
|---|---|
| 直接 503 断连 | 不合格 |
| 回 429 不带 Retry-After | 半合格 |
| 回 429 + Retry-After header | 合格 |
| 回 429 + Retry-After + quota header | 优秀 |
加分项是提供 X-RateLimit-Remaining 这类 header,让你可以主动节流而不是被动吃 429。
SLA 条款的魔鬼细节
大家都写 99.9%。99.9% 等于每月 43.2 分钟 downtime,99.95% 是 21.6 分钟,99.99% 是 4.3 分钟。
但 SLA 的真正价值不在那个数字,在除外条款。要逐条看:
- 计划性维护算不算 downtime?
- 区域性中断算不算?
- DDoS 攻击期间算不算?
- 第三方依赖(例如上游 DNS)算不算?
更重要的是 service credit 机制。没达到 SLA 时退多少?退账户 credit 还是现金?credit 能累积还是过期?
坦白说,大多数 SLA 写起来都漂亮,实际申诉时多数被除外条款挡下。所以采购时不能只看百分比,要看过去 12 个月的真实 incident history——可以要求对方在 NDA 下提供。
Egress 计费——成本黑洞
Egress(流量出站)是图床最容易爆预算的地方。供应商最爱的套路是存储费便宜、egress 费高。
从数据来看,主流供应商的 egress 单价差异可以到 10 倍以上。Cloudflare R2 做到 zero egress(在自家网络内),Cloudinary 走 credit 模型,imgix 按 request 计。哪个划算完全看你的流量形态。
在国内市场,阿里云 OSS 和腾讯云 COS 也是常见的选择。阿里云 OSS 提供内网流量免费、外网流量按梯度计费的模式,腾讯云 COS 有类似的定价结构。如果业务主要面向国内用户,走国内 CDN 节点在延迟和成本上都会比海外服务商有优势。但需要注意的是,使用境内云服务需要完成 ICP 备案等合规要求。
采购前务必问清楚三件事:
- 是否有 tier 阶梯折扣?通常 10TB/月以上会有明显优惠
- 跨 region 的内网流量算不算 egress?
- CDN hit 算不算 egress?有些供应商把 CDN cache hit 也算流量
我踩过这个坑:测试环境月流量 200GB 没事,上线后瞬间冲到 8TB,账单多一个零。合同签前没问清楚 overage 行为,当月直接吃满。
CDN 边缘节点与真实延迟
PoP 数字很会膨胀。供应商写"300+ PoP"听起来很厉害,实际上可能 280 个在欧美,亚太只有 5 个。
验证方法很简单:要对方给 anycast IP,你从不同地区 VPS(北京、东京、新加坡、法兰克福、圣保罗)跑 mtr 看真实 RTT。低于 80ms 才算可用。
亚太区的客户如果你的 CDN 要走回美西,那 150ms+ 起跳,前端图片加载体感就很差。这在 B2B SaaS 场景——尤其是电商和媒体——会直接影响转化率。
容易被忽略的三个规格
这三项不在常见的"图床比较表"里,但真正用起来会很痛。
EXIF 与 Metadata 的合规处理
EXIF 里有 GPS 坐标、相机序列号、拍摄时间。上传到公开图床,这些数据默认全部带着走。
B2B 场景要问:
- 可否选择性移除 EXIF(只去掉 GPS,保留版权信息)?
- 是否支持 IPTC / XMP metadata 操作?
- Metadata 处理是上传时还是 on-the-fly?
个保法和数据安全法都把 GPS 当作个人信息。处理不当,法律风险直接转嫁到你公司。
OAuth2 vs API Key 的混合认证
老式图床只给 API Key。现代 B2B 要求混合方案:
- 内部系统对系统:API Key + IP 白名单
- 用户前端 SPA:OAuth2 PKCE flow
- 临时访问:Pre-signed URL
如果供应商只给你一把永久 API Key 让你自己处理 scope,那是把安全风险甩给客户。合格的方案应支持 scoped token、自动轮替、撤销 API。
硬删除与数据留存
GDPR 的"被遗忘权"要求 30 天内执行。很多图床说"我们会删除",实际是软删除——对象还躺在 S3 里、CDN cache 里、备份带里。
采购时一定要确认:
- 删除是否写进 DPA(Data Processing Agreement)?
- 备份周期是否有对应删除机制?
- 能否提供删除证明?
我处理过一个真实案例,客户收到 GDPR 删除请求,结果供应商的冷存储备份保留 365 天改不了。法务来回搞了三个月。
lpic.cc 的定位说明
必须老实说:lpic.cc 目前不是 B2B 企业级方案。
我们定位在个人开发者、博主、论坛分享场景,提供免费上传、密码保护、30 天保留。底层用 Cloudflare R2 + 自建 API,架构上确实用到了这篇讲的几项(Pre-signed URL、Webhook、EXIF 处理),但没有提供企业 SLA、没有 SOC 2 认证、也没有 DPA。
如果你是技术主管在找生产级图床,这份 checklist 拿去评 Cloudinary、imgix、Cloudflare Images、ImageKit 比较实用。如果你在找个人或小团队用的轻量方案,lpic.cc 可以试试——免费上传看看 就知道合不合适。
常见问题 FAQ
Q1:小团队有必要用企业级图床吗?
不一定。月活 1 万以下、流量 <500GB/月,Cloudflare R2 + Workers 自己搭一层就够用,成本可以压到 $5/月以下。企业级方案的价值在 SLA、合规、support SLA,这些小团队未必需要。但如果你服务 B2B 客户、客户合同里写了 DPA 要求,那没得选。
Q2:S3 兼容性真的重要吗?
非常重要。S3 API 是事实标准,支持代表你可以用成熟的 SDK、Terraform provider、备份工具。不支持代表你被锁在供应商私有 API 里,未来迁移成本极高。这是典型的 vendor lock-in 指标。
Q3:Webhook 和 polling 差在哪?为什么一定要 webhook?
Polling 是你每 N 秒问一次"好了没",webhook 是对方完成后推给你。差别在延迟(秒级 vs 毫秒级)和成本(你的 API call 配额 vs 零成本)。上传完成、转码完成、病毒扫描等事件,没有 webhook 基本没法做实时体验。
Q4:SLA 99.9% 和 99.99% 真的差那么多吗?
数字上是 43 分钟 vs 4 分钟/月。实际影响看你的业务。如果是电商结算流程的商品图,每分钟都是收入损失;如果是内部员工手册图,99.9% 甚至 99% 都无所谓。采购时把 SLA 需求和真实业务影响对齐,不要盲目追高。
Q5:Egress 零费用的 Cloudflare R2 是不是无脑选?
不是。R2 的 zero egress 限定在 Cloudflare 网络内(经过 Workers 或 CDN),如果你要从其他云拉数据出来,照样算钱。另外 R2 的 class A operation(写入类)单价不便宜,写多读少的场景未必划算。算总账看你的 read/write 比例。
参考资料
- Best S3-Compatible Storage Providers Top 5 in 2026
- S3-Compatible Object Storage What It Means for Enterprises
- Cloudflare Images Pricing Explained 2026
- Image Transform Pricing Compared
- Cloudinary vs Imgix Comparison
- How to Implement SHA256 Webhook Signature Verification
- Google Cloud CDN Signed URLs
- Webhooks Security Best Practices - Stytch
- What is an Uptime SLA Guarantee - Uptime.com