我正在使用Firebase函数制作缩略图,但是,我尝试了两种方法来获取结果图像的downloadURL,但是我都有不同的问题:
第一种方法:我使用了下面的代码
const signedUrls = await bucket.file(thumbFilePath).getSignedUrl({
action: "read",
expires: "03-09-2491"
});
对于这种方法,几天后,即使到期日期很长,URL也不再有效,我找不到合适的解决方案,与此同时,我找到了另一种方法,所以尝试了。
第二种方法:我使用下面的代码
// Uploading the thumbnail than make it public to be able to access it.
await bucket.upload(tempFilePath_des, {
destination: thumbFilePath,
metadata: metadata
});
await storage
.bucket(fileBucket)
.file(thumbFilePath)
.makePublic();
thumbURL =
"https://storage.cloud.google.com/" + fileBucket + "/" + thumbFilePath;
当我使用Google Auth时,这种方法效果很好,但是当我使用电子邮件身份验证时,会引发以下错误:
跨源读取阻止(CORB)阻止了跨源响应 MIME类型为text / html。请参阅以获取更多详细信息。
请帮忙吗?
答案 0 :(得分:0)
我发现了另一种似乎在此post
中有效的方法上传图片时,我们需要为其提供一个UUID,或者如果需要,可以使用以下内容从文件的元数据中进行检索
const [metadata] = await storage.bucket(fileBucket).file(filePath).getMetadata();
const uuid = metadata.metadata.firebaseStorageDownloadTokens
不是我们构造URL,这是我的工作代码:
const UUID = require('uuid/v4');
let uuid = UUID()
await bucket.upload(tempFilePath_des, {
destination: thumbFilePath,
metadata : {
contentType: metdata.contentType,
metadata: {
firebaseStorageDownloadTokens: uuid
}
}
});
thumbURL =
"https://firebasestorage.googleapis.com/v0/b/" + fileBucket + "/o/" + encodeURIComponent(thumbFilePath) + "?alt=media&token=" + uuid;