我正在尝试从 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)
}
我认为 firebase.createReadStream() 函数是一个异步函数。
所以会是:
const fileStorage = await getStorageAdmin(uid, "/sample.png");
const file = await fileStorage.createReadStream();
你能展示一下 getStorageAdmin() 的函数吗?
您能解决这个问题吗?我在类似的船上自动取款机上,看不到任何解决方案。