API 文档

通过 API 上传和管理图片

接口概览

上传图片

通过 Edge Function 一次性完成上传和数据库记录,单文件最大 100MB

获取外链

上传成功即返回公开访问 URL

匿名上传的图片无法在个人图库中管理。如需管理图片,请先登录。
环境变量
env
SUPABASE_URL=https://backend.appmiaoda.com/projects/supabase316894448002838528
SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoyMDk0OTgwNzI0LCJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJhbm9uIiwic3ViIjoiYW5vbiJ9.fN4QLPpYBXVSmQuCafG-hJxbVsKZBrpaBc-B9-PG2O8
上传图片

使用 Supabase JS 客户端调用 Edge Function 上传:

javascript
import { createClient } from '@supabase/supabase-js';

const supabase = createClient(
  'https://backend.appmiaoda.com/projects/supabase316894448002838528',
  'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoyMDk0OTgwNzI0LCJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJhbm9uIiwic3ViIjoiYW5vbiJ9.fN4QLPpYBXVSmQuCafG-hJxbVsKZBrpaBc-B9-PG2O8'
);

async function uploadImage(file) {
  const formData = new FormData();
  formData.append('file', file);

  const { data, error } = await supabase.functions.invoke('upload-image', {
    body: formData,
  });

  if (error) throw error;
  if (!data.success) throw new Error(data.error || '上传失败');

  return data.image.public_url;
}
响应示例
json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "owner_id": null,
  "filename": "photo.jpg",
  "display_name": "photo.jpg",
  "storage_path": "a1b2c3d4.jpg",
  "public_url": "https://xxx.supabase.co/storage/v1/object/public/images/a1b2c3d4.jpg",
  "mime_type": "image/jpeg",
  "size_bytes": 1048576,
  "view_count": 0,
  "is_deleted": false,
  "created_at": "2026-05-27T10:00:00Z"
}
限制说明
  • 单文件大小限制:100MB
  • 支持格式:JPG、PNG、GIF、WebP、SVG
  • 匿名上传的图片无法在个人图库中管理,建议登录后上传
  • 公开 URL 可直接用于 Markdown、HTML、论坛等场景