You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅通过文件路径上传本地图片至Supabase的技术问询

仅通过本地文件路径上传至Supabase的解决方案

你遇到的问题核心是**fetch用于网络请求,无法直接读取本地文件系统路径**,得换用Node.js的文件系统模块处理本地文件,具体方案如下:

核心思路

在Node.js环境下(你用stability-client调用API,大概率是后端/脚本场景),通过fs模块读取本地文件为Buffer,再转成Blob或直接用Buffer上传至Supabase存储。

代码实现

import { createClient } from '@supabase/supabase-js';
import { readFile } from 'fs/promises';
import path from 'path';

// 初始化Supabase客户端(替换成你的Supabase项目信息)
const supabase = createClient('你的Supabase项目URL', '你的Supabase服务端密钥');

async function uploadImageFromPath(localFilePath) {
  try {
    // 转成绝对路径(避免相对路径识别错误)
    const absolutePath = path.resolve(localFilePath);
    // 读取本地文件为Buffer
    const fileBuffer = await readFile(absolutePath);
    // 转为Blob(Supabase也支持直接传入Buffer)
    const imageBlob = new Blob([fileBuffer], { type: 'image/png' });

    // 上传到Supabase存储桶
    const { data, error } = await supabase.storage
      .from('你的存储桶名称') // 替换成你的目标存储桶名
      .upload(`generated/${Date.now()}.png`, imageBlob, {
        contentType: 'image/png',
        upsert: false // 是否覆盖同名文件,按需设置
      });

    if (error) throw error;
    console.log('上传成功,文件路径:', data.path);
  } catch (err) {
    console.error('上传失败:', err.message);
  }
}

// 调用上传方法,传入你的本地文件路径
uploadImageFromPath('Users/johnsmith/Documents/projects/testProject/.out/fileName.png');

注意事项

  • 若使用CommonJS规范,将import替换为require即可
  • 确保本地文件有读取权限,避免因权限不足报错
  • Supabase存储桶需配置正确的上传权限(比如允许服务端密钥上传)
  • 若不确定文件MIME类型,可借助mime-types包自动识别:
    import mime from 'mime-types';
    const mimeType = mime.lookup(localFilePath);
    

内容的提问来源于stack exchange,提问作者ronnie burns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:47:03