【问题标题】:Firebase Cloud Function: Return a Base64 string in jsonFirebase Cloud 函数:在 json 中返回一个 Base64 字符串
【发布时间】:2020-05-15 20:09:58
【问题描述】:

我正在编写一个 Firebase 云函数,它接收一个 URL,并将 URL 的内容(可以是 pdf 文档/图像)转换为 base64 字符串,并以 json 对象的形式返回。我当前的实现遇到了以下错误消息:

函数执行耗时 1522 ms,完成状态为:'response error'

没有记录错误日志。

到目前为止我的代码:

module.exports = functions.https.onRequest((req, res) => {
    let url = req.query.url
    return getBuffer(url)
    .then((buf) => {
        let base64String = buf.toString('base64')
        let responseObject = JSON.stringify({'base64': base64String})
        res.status(200).json(responseObject)
    })
    .catch((err) => {
        console.log("Error getting buf", err)
    })
});

响应对象是一个有效的 json(通过在线 json 验证器检查)并且 base64String 看起来也正确(即没有无效字符,例如双反斜杠)。

建议,谢谢。

【问题讨论】:

  • 这似乎与 Google 面临的一个错误有关。我建议您通过 1:1 支持与他们联系,以便他们更好地为您提供帮助。您可以通过GCP Support 与他们联系。

标签: javascript node.js firebase google-cloud-functions


【解决方案1】:

看起来您的代码在生成响应方面做了大量工作。如果你想为一个对象发送一个序列化的 JSON,只需这样做:

res.status(200).json({'base64': base64String})

res.json() 方法会自动序列化字符串,因此您不必调用 JSON.stringify()。

还请记住,Cloud Functions 将响应的总大小限制为 10MB,因此如果您的序列化对象大于此大小,您可能会失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2021-09-27
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多