我正试图从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)
})
但运行此代码会导致Bad Request(状态代码: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)
}
1条答案
按热度按时间tkqqtvp11#
createReadStream()函数是一个异步函数。
所以它会是:
可以演示getStorageAdmin()的函数吗?