logoPay4SaaS
更多

图片上传配置

本项目使用 Supabase Storage 处理图片上传。配置完成后,任何需要图片上传的功能(联系表单、用户头像等)都可以使用同一套基础设施。

目前图片上传用于 联系表单/contact),用户提交反馈或 bug 报告时可以附带截图。


配置步骤

1. 创建 Storage Bucket

进入 Supabase Dashboard → Storage → New bucket

  • Name:根据用途命名(如 contact-attachments
  • Public bucket开启(如果图片需要公开访问,例如通知邮件中的图片)
  • Restrict file size5(MB)—— 可根据需求调整
  • Restrict MIME typesimage/jpeg, image/png, image/gif, image/webp

2. 添加 RLS 策略

进入 Supabase Dashboard → SQL Editor,执行:

CREATE POLICY "Allow public uploads" ON storage.objects
  FOR INSERT WITH CHECK (bucket_id = 'your-bucket-name');

CREATE POLICY "Allow public reads" ON storage.objects
  FOR SELECT USING (bucket_id = 'your-bucket-name');

your-bucket-name 替换为你实际创建的 bucket 名称。


联系表单示例

/contact 页面使用名为 contact-attachments 的 bucket,支持:

  • 文件选择器 —— 点击选择图片
  • 粘贴上传 —— Ctrl+V 直接粘贴剪贴板截图
  • 每次提交最多 3 张图片,每张 5MB
  • 支持格式:JPEG、PNG、GIF、WebP

图片 URL 保存在 contact_submissions 表的 metadata JSONB 字段中:

{
  "referer": "https://yoursite.com/contact",
  "attachments": [
    "https://xxx.supabase.co/storage/v1/object/public/contact-attachments/xxx/image.png"
  ]
}

通知邮件中会显示可点击的图片缩略图。


存储用量

Supabase 免费版提供 1GB 存储空间。按每张截图约 200-500KB 计算,可以存储数千张图片,大多数项目完全够用。

如果需要更多存储空间,有以下方案:

  • 升级 Supabase 套餐 —— 最简单的方式,Pro 版提供 100GB 存储。
  • 第三方对象存储 —— 将 Supabase Storage 替换为 Cloudflare R2(无出站流量费)、AWS S3阿里云 OSS 等服务。只需在代码中将上传逻辑替换为对应服务商的 SDK。
  • 图片压缩 —— 上传前对图片进行压缩或转换为 WebP 格式,减少单张文件体积,延长现有存储空间的使用寿命。

On this page