gpt4 book ai didi

node.js - express res.download 提供 0 字节文件

转载 作者:搜寻专家 更新时间:2023-10-31 23:57:22 25 4
gpt4 key购买 nike

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

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);
}
});
})

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

从 file file download shoes 中检查文件是的,它在那里,是的,一切都很好。

可能发现问题:我认为问题是文件在提供给客户端之前没有完全下载,见下文,我将尝试向 PIPE 添加回调......

function fileDownload(id, callback){
info(id, function(res){
if(!res.error){
info(id, function(res){
if(!res.error){
//console.log(res.data);
var d = JSON.parse(res.data);
//console.log(d['file_name']);
var url2 = baseurl + "/api/file/" + id ;
var r = request(url2);
r.on('response', function (res) {
res.pipe(fs.createWriteStream('./' + d['id'] + d['file_name']));
console.log("Download Done: " + './' + d['id'] + d['file_name']);
return callback({success:true, data:d['id'] + d['file_name']});
});
}else{
console.log("ERROR: " + res.data)
return callback({success:false, data: res.data});
}
});
}else{
console.log("ERROR: " + res.data)
return callback({success:false, data: res.data});
}
});

};

最佳答案

问题是由于在流完成写入之前提供了文件,

修复添加 .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");

});

关于node.js - express res.download 提供 0 字节文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51117088/

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