微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nodejs Express response.download() 不符合预期

如何解决Nodejs Express response.download() 不符合预期

我正在使用以下代码来跟踪活动下载计数。

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

每次下载开始时,它会将下载计数加一,但几秒钟后“下载完成”会打印到日志中,并且下载计数会在下载过程中递减。

在 nodejs express 文档中,回调函数在下载完成后或发生异常时被调用。任何人都可以帮忙吗?

我正在使用 nodejs 14.16.0 并表达 4.17.1

解决方法

终于找到了这个场景背后的原因。 我使用 nginx 服务器作为节点应用程序的反向代理,nginx 缓存内容并在关闭与客户端的连接之前关闭与节点应用程序的连接。

所以这是固定的

proxy_request_buffering off;
proxy_max_temp_file_size 0;

在 nginx 服务器的 location / 块内

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。