从 Firebase Storage 获取 ReadStream 并传递到 Openai API

问题描述 投票:0回答:2

我正在尝试从 firebase 存储下载图像并将其传递到 openai 端点

目前,我的代码如下

const fileStorage = await getStorageAdmin(uid, "/sample.png");
  const file = fileStorage.createReadStream();

  const maskStorage = await getStorageAdmin(uid, "/mask.png");
  const mask = maskStorage.createReadStream();

 const res = await openai.createImageEdit(
      file,
      prompt,
      mask,
      1,
      "512x512",
      "url"
  ).catch((e) => {
      console.log("ERROR: " + e)
  })

但是运行此代码会导致错误请求(状态代码:400)。

当我尝试从硬盘读取文件时,它工作没有问题

const file = fs.createReadStream("./images/anna.png");
  const mask = fs.createReadStream("./images/mask.png");

  const res = await openai.createImageEdit(
      file,
      prompt,
      mask,
      1,
      "512x512",
      "url"
  ).catch((e) => {
      console.log("ERROR: " + e)
  })

这意味着,api 请求没问题,但从 firebase 存储读取肯定存在问题,因为这是唯一的区别,但我无法弄清楚我做错了什么。 我不知道使用 fs.createReadStream() 和 firebase-admin 的 file.createReadStream 有什么区别。我认为两种方法都应该返回图像内容,但一种有效,另一种无效。

getStorageAdmin 函数仅返回对我要下载的文件的引用。

export const getStorageAdmin = async (uid:string, imagepath:string) =>{
    return await getStorage().bucket().file(uid+imagepath)
}
javascript next.js firebase-storage firebase-admin openai-api
2个回答
0
投票

我认为 firebase.createReadStream() 函数是一个异步函数。

所以会是:

const fileStorage = await getStorageAdmin(uid, "/sample.png");
const file = await fileStorage.createReadStream();

你能展示一下 getStorageAdmin() 的函数吗?


-1
投票

您能解决这个问题吗?我在类似的船上自动取款机上,看不到任何解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.