使用Google Firebase云功能下载或查看文件

时间:2019-01-28 05:39:18

标签: firebase google-cloud-functions

我要做什么:

  1. 使用第三方库生成发票。
  2. 下载/查看发票

我的代码

let createPdf = functions.https.onRequest(async (request, response) => {

    // more code here 

    if (download == 'true') {
        return response.status(200).download(__dirname + "/docs/" + newFileName, newFileName, (err) => {
            if (err) {
                console.log(err.message);
            } else {
                console.log("Downloaded:", filename)
            }
        })
    } else {
        var options = {
            root: __dirname,
            dotfiles: 'deny',
            headers: {
                'x-timestamp': Date.now(),
                'x-sent': true
            }
        };

        return response.status(200).sendFile("/docs/" + newFileName, options, (err) => {
            if (err) {
                console.log(err);
            } else {
                console.log('Sent:', filename);
            }
        });
    }
});

错误

{
  "error": {
    "code": 500,
    "status": "INTERNAL",
    "message": "function crashed",
    "errors": [
      "socket hang up"
    ]
  }
}

注意: 当我返回一个简单的字符串而不是文件时,它就起作用了。

1 个答案:

答案 0 :(得分:0)

使用明确的请求和响应对象来发送文件。

阅读此文档:using_express_request_and_response_objects

使用 sendFile

时,请不要忘记使用绝对路径