gpt4 book ai didi

node.js - Firebase Cloud Storage getSignedUrl 过期日期不能是过去的(Firebase Cloud Functions)

转载 作者:行者123 更新时间:2023-12-02 00:41:11 26 4
gpt4 key购买 nike

这是我与问题相关的云函数代码片段:

// Somewhere outside the function
import * as nodedt from 'node-datetime'
...

// Inside the function trigger
const dt = nodedt.create((new Date()).valueOf() + 300000)
const exp = dt.format("d-m-Y H:M:S")

return bucket.file(MY_FILE_PATH).getSignedUrl({
action: 'read',
expires: exp
})
.then(signedUrl => console.log(`Signed url: ${signedUrl} retrieved.`))
.then(error => console.log(`Failed to retrieve signed url: ${error}`))

函数日志中的输出是:

Oct 9, 2017

1:17:43.087 AM outlined_flag
FUNCTIONS_NAME Function execution took 2353 ms, finished with status: 'ok'

1:17:43.075 AM info
FUNCTIONS_NAME Failed to retrieve signed url: Error: An expiration date cannot be in the past.

1:17:43.068 AM info
FUNCTIONS_NAME Fetching signed url which expires at 08-10-2017 18:22:43. Current time 08-10-2017 18:17:43

这很奇怪,因为在日志中,当我打印出到期日期和当前日期时,很明显到期日期不是过去的(它们相差大约 5 分钟,如预期的那样)

我的初步分析是因为 Firebase Server 中的时间与我的时区不同(我的时间是 GMT+7。注意日志日期是 2017 年 10 月 9 日,日志消息是 2017 年 10 月 8 日)。 如果是这样,那么如何同步时区?我真的不在乎使用哪个时区,因为我想要的只是5 分钟的到期时间,而 getSignedUrl() 参数中的 expires 字段不能被格式化为毫秒值。 (试过了,打印成 NaN-NaN-NaN NaN:NaN:NaN)

那么,有什么解决办法吗?以及如何去做?谢谢

附言Idk 如果这是相关的:我需要将签名的 url 传递到 kraken.io API 中以进行图像优化、缩略图创建和基于 EXIF 的自动旋转)。除了使用签名 url 之外的其他选项是首先将图像下载到 os.tmpdir() 文件夹,并在 tmp 中提供该文件的链接,然后调用 fs.unlinkSync() 过程完成后。 但是如果图像在 os.tmpdir() 文件夹中,我不知道如何获取 url 链接。

最佳答案

好吧,事实证明它需要采用月-日-年的格式。

例如

01-04-2017 for Apr 4th, 2017

我做了什么:

01-04-2017 for Jan 1st, 2017

关于node.js - Firebase Cloud Storage getSignedUrl 过期日期不能是过去的(Firebase Cloud Functions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46634851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com