Nodejs Express response.download() 未按预期运行
Nodejs Express response.download() Not Behaving as Expected
我正在使用以下代码来跟踪活动下载计数。
router.get('/download/:fileName', (req, res) => {
let fileName = req.params.fileName;
let baseFilePath='/home/filePath';
incrementDownloadCount(fileName);
return res.download(
`${baseFilePath}/${fileName}`,
`${fileName}`,
function (err) {
if (err) {
console.log(`ERROR ++ : ${err}`);
} else {
console.log('download completed');
}
decrementDownloadCount(fileName);
}
);
});
每次开始下载时,它都会将下载计数递增 1,但几秒钟后 'download completed' 会打印到日志中,并且在下载过程中下载计数会递减。
根据 nodejs express 文档,回调函数在下载完成后或发生异常时调用。有人可以帮忙吗?
我正在使用 nodejs 14.16.0 和 express 4.17.1
终于找到了这个场景背后的原因。
我使用 nginx 服务器作为节点应用程序的反向代理,nginx 缓存内容并在关闭与客户端的连接之前关闭与节点应用程序的连接。
所以这是通过
解决的
proxy_request_buffering off;
proxy_max_temp_file_size 0;
在 nginx 服务器的 location /
块内
我正在使用以下代码来跟踪活动下载计数。
router.get('/download/:fileName', (req, res) => {
let fileName = req.params.fileName;
let baseFilePath='/home/filePath';
incrementDownloadCount(fileName);
return res.download(
`${baseFilePath}/${fileName}`,
`${fileName}`,
function (err) {
if (err) {
console.log(`ERROR ++ : ${err}`);
} else {
console.log('download completed');
}
decrementDownloadCount(fileName);
}
);
});
每次开始下载时,它都会将下载计数递增 1,但几秒钟后 'download completed' 会打印到日志中,并且在下载过程中下载计数会递减。
根据 nodejs express 文档,回调函数在下载完成后或发生异常时调用。有人可以帮忙吗?
我正在使用 nodejs 14.16.0 和 express 4.17.1
终于找到了这个场景背后的原因。 我使用 nginx 服务器作为节点应用程序的反向代理,nginx 缓存内容并在关闭与客户端的连接之前关闭与节点应用程序的连接。
所以这是通过
解决的proxy_request_buffering off;
proxy_max_temp_file_size 0;
在 nginx 服务器的 location /
块内