【问题标题】:Sending a Json File in express以快递方式发送 Json 文件
【发布时间】:2015-07-14 18:37:10
【问题描述】:

我试图在我的应用程序中设置路由以在打开 .json 文件时下载它,但是我不太清楚 res.sendFile 是如何工作的。当我发送我的文件时,出于某种原因,客户端会收到一个具有正确名称的完全空白文件。

这是我的代码:

fs.writeFile(path.join(__dirname, '../../public/send/file.json'), JSON.stringify(resultDict));

res.setHeader('Content-disposition', 'attachment; filename=file.json');

var options = {
    root: __dirname + '/../../public/send/',
    dotfiles: 'deny',
    headers: {
        'x-timestamp': Date.now(),
        'x-sent': true
    }
};

res.sendFile('file.json', options, function(err){
    if(err){
        console.log(err);
        res.status(err.status).end();
    }
    else{
        console.log('Sent: ' + "file.json");
    }
});

为什么发送的文件全是空的?

【问题讨论】:

    标签: json node.js express


    【解决方案1】:

    您正在使用fs.writeFile 函数,但未等待回调(这将指示错误或成功)请参阅:https://nodejs.org/api/fs.html#fs_fs_writefile_filename_data_options_callback

    因此,在发送文件代码运行时,文件还没有被写入,所以发送的是空白内容。

    要解决此问题,请将 res.setHeader 到函数末尾的所有内容添加到函数中,并将其作为最后一个参数添加到 fs.writeFile

    【讨论】:

    • 谢谢你,解决了我的问题!
    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 2021-10-04
    • 2018-11-10
    • 2016-05-28
    • 2021-05-24
    • 2017-09-16
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多