表达res.download服务0字节文件

时间:2018-06-30 17:29:06

标签: node.js express request

res.download正在提供文件,但下载后是否为0字节? 有什么想法吗?

$KAFKA_HOME/config/server.properties

文件夹上的ls表示文件已准备好下载,名称正确,浏览器显示的所有下载框都在其中,但下载大小始终为0字节。

从文件文件下载页面检查文件,是的,而且一切正常。

发现的问题可能是: 我认为问题在于文件在送达客户端之前尚未完全下载,请参阅下文,我将尝试向PIPE添加回调。

app.get('/download', function(req, res) {
    console.log("download");
    console.log(req.query.fileID);
    fileDownload(req.query.fileID, function(rep){
        if(rep.success){
              console.log("Serving File to User, File: " + rep.data);
              res.download(__dirname +  "/" + rep.data, rep.data)   

        }else{
            console.log(res);
        }
    });
})

1 个答案:

答案 0 :(得分:1)

该问题是由于在流完成写入之前就已将文件送达,

修复将.on('close')添加到流中。

 r.on('response',  function (res) {
                        res.pipe(fs.createWriteStream('./' + d['id'] + d['file_name']).on('close', function() {
                            console.log('file done');
                            console.log("Download Done: " + './' + d['id'] + d['file_name']);
                            return callback({success:true, data:d['id'] + d['file_name']});
                          }));
                        console.log("You should not see this");

                    });