目录
本文发布于 2年前,其中的信息可能已发生变化,请结合实际情况参考。
免费图床API搭建教程
博客需要图片,但图床服务总是要花钱?今天教你自己搭建一个免费的图床API! 📸✨
为什么需要自己的图床?
- 第三方图床不稳定,随时可能跑路
- 免费图床有容量和流量限制
- 自己搭建完全可控,数据安全
- 可以自定义API接口
方案选择
方案一:使用 GitHub 作为存储
利用 GitHub 的 raw 文件访问作为图床,配合 jsDelivr CDN 加速。
方案二:使用 Cloudflare R2
Cloudflare R2 提供免费的存储空间,且没有出口流量费用。
方案三:自建对象存储
使用 MinIO 搭建自己的 S3 兼容对象存储。
本文我们选择方案一,最简单且完全免费!
搭建步骤
第一步:创建 GitHub 仓库
bash
# 创建一个公开仓库用于存储图片
git init image-hosting
cd image-hosting
echo "# Image Hosting" > README.md
git add .
git commit -m "init"
git remote add origin https://github.com/yourname/image-hosting.git
git push -u origin main第二步:编写上传 API
使用 Cloudflare Workers 搭建上传接口:
javascript
export default {
async fetch(request, env) {
if (request.method !== 'POST') {
return new Response('Method Not Allowed', { status: 405 });
}
const formData = await request.formData();
const file = formData.get('image');
if (!file) {
return new Response('No file uploaded', { status: 400 });
}
// 生成文件名
const ext = file.name.split('.').pop();
const filename = `${Date.now()}.${ext}`;
// 上传到 GitHub
const content = await file.arrayBuffer();
const base64 = btoa(String.fromCharCode(...new Uint8Array(content)));
const response = await fetch(
`https://api.github.com/repos/${env.REPO}/contents/images/${filename}`,
{
method: 'PUT',
headers: {
'Authorization': `token ${env.GITHUB_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
message: `upload ${filename}`,
content: base64,
}),
}
);
return new Response(JSON.stringify({
success: true,
url: `https://cdn.jsdelivr.net/gh/${env.REPO}/images/${filename}`
}), {
headers: { 'Content-Type': 'application/json' }
});
}
};
第三步:部署到 Cloudflare
bash
# 安装 Wrangler CLI
npm install -g wrangler
# 登录
wrangler login
# 部署
wrangler deploy第四步:配置环境变量
在 Cloudflare Dashboard 中设置:
REPO- 你的仓库名,如yourname/image-hostingGITHUB_TOKEN- GitHub Personal Access Token
使用方法
bash
# 上传图片
curl -X POST https://your-worker.workers.dev/ -F "image=@photo.jpg"
# 返回结果
# {"success": true, "url": "https://cdn.jsdelivr.net/gh/..."}注意事项
- GitHub 单文件限制 100MB
- jsDelivr CDN 有缓存,更新图片可能需要刷新
- 建议上传前压缩图片
- GitHub Token 要妅善保管
总结
自建免费图床其实很简单,利用 GitHub + Cloudflare Workers 就能实现。这个方案完全免费,适合个人博客使用。如果你需要更大的存储空间,可以考虑 Cloudflare R2。希望这篇教程对大家有帮助~



评论 1