我有存储触发功能,该功能可以调整大小并将替换的图像替换到存储中,然后更新数据库中的URL
}).then(() => {
console.log('Original file deleted', filePath)
const logo = storageRef.file(JPEGFilePath)
return logo.getSignedUrl({ action: 'read', expires: date })
// const logo = storageRef.child(JPEGFilePath)
// return logo.getDownloadURL()
// return storageUrl.getDownloadURL(JPEGFilePath)
}).then((url) => {
const newRef = db.collection("user").doc(uid)
return newRef.set({
profile: { profileImg: url[0] }
}, {
merge: true
})
})
这是我设置有效日期的方法
const d = new Date()
const date = new Date(d.setFullYear(d.getFullYear() + 200)).toString()
但是图像会在几周后(大约2周左右)过期。有谁知道该如何解决?正如您从注释代码中看到的,我什至玩过getDownloadURL,但这似乎在触发器中不起作用
答案 0 :(得分:1)
通过以下链接:
https://stackoverflow.com/a/42959262/370321
https://cloud.google.com/nodejs/docs/reference/storage/2.5.x/File#getSignedPolicy
不确定您使用的是@ google / cloud-storage的哪个版本,但是假设它是2.5.x,则看起来您在date字段中传递的任何值都将传递到new Date()中,因此看起来代码应该像在开发工具中尝试的那样工作。我唯一能猜测的是,它不希望您将文件保留200年。
根据源代码:
https://github.com/googleapis/nodejs-storage/blob/master/src/file.ts#L2358
您是否尝试了更短的时间-或以日期格式将其格式化为mm-dd-yyyy?
答案 1 :(得分:0)
好,所以我尝试了一些东西,但是我不知道这是否行得通,所以我会在2周内回来,将我的问题标记为已回答。对于那些有相同问题的人,我将尝试概括一下我所做的事情。
1 /就像在评论中提到的@TasosV一样,从IAM下载服务帐户密钥。这是链接的操作方法
2 /将下载的JSON文件保存在您的函数目录中
3 /将密钥包括在功能存储器中。但是请注意如何设置文件的路径。这是我对它具有完整功能的问题