Share

外观
风格

img-worker

2026年2月7日 · 工具

- 图床服务

轻量图床,基于 Cloudflare Worker + R2。

特性

  • 内容哈希去重:相同图片只存一份
  • 长期缓存:hash 作为文件名,可永久缓存
  • 格式支持:jpg, png, gif, webp, avif, svg
  • 大小限制:10MB

API

上传图片

# FormData 上传
curl -X POST https://<REDACTED_DOMAIN>/upload \
  -H "Authorization: Bearer $<REDACTED_TOKEN>" \
  -F "file=@image.png"

# Binary 上传
curl -X POST https://<REDACTED_DOMAIN>/upload \
  -H "Authorization: Bearer $<REDACTED_TOKEN>" \
  -H "Content-Type: image/png" \
  -H "X-Filename: image.png" \
  --data-binary @image.png

返回:

{
  "url": "https://<REDACTED_DOMAIN>/abc123.png",
  "hash": "abc123...",
  "ext": "png",
  "size": 12345,
  "exists": false
}

访问图片

GET https://<REDACTED_DOMAIN>/{hash}.{ext}

带 1 年强缓存。

删除图片

curl -X DELETE https://<REDACTED_DOMAIN>/abc123.png \
  -H "Authorization: Bearer $<REDACTED_TOKEN>"

部署

1. 创建 R2 Bucket

wrangler r2 bucket create img

2. 设置 API Key

cd workers/img
wrangler secret put <REDACTED_TOKEN>
# 输入你的 API Key

3. 部署

wrangler deploy

4. 配置自定义域名

在 Cloudflare Dashboard:

  1. Workers & Pages → → Settings → Triggers
  2. Add Custom Domain: <REDACTED_DOMAIN>

项目结构

workers/img/
├── src/index.ts      # 主入口
├── wrangler.toml     # 配置
└── package.json

环境变量

变量 说明
<REDACTED_TOKEN> 上传/删除认证
<REDACTED_ENV_VAR> 公开访问地址
<REDACTED_ENV_VAR> R2 绑定

费用

R2 免费额度:

  • 存储:10GB/月
  • Class A(写入):100 万次/月
  • Class B(读取):1000 万次/月

对于个人图床完全够用。