【问题标题】:Downloading zip file through node.js fails the first time, but works in subsequent tries通过 node.js 下载 zip 文件第一次失败,但在后续尝试中有效
【发布时间】:2018-01-01 09:50:11
【问题描述】:

我有一个路由器来下载某些文件。但是,第一次没有下载 zip 文件,它一直在启动。然而,在第二次尝试时,一切正常。我做错了什么吗? createfile 函数只是创建一个正在压缩的文件

app.post('/downlaod_file',ensureAuthenticated,(req,res)=>{
    var json_array=[];
        for (var i = 0, len = req.body.idlist.length; i < len; i++) {
            var path = createfile(req.body.idlist[i])
            json_array.push({
                path: 'file_' + req.body.idlist[i] + '.docx' ,
                name: 'file' + req.body.idlist[i] + '.docx'
            })

        }
        res.zip(json_array);
});

【问题讨论】:

  • createfile 是异步的吗?
  • 是的,它调用了一个python脚本,该脚本基于该函数编写的一些json文件创建了一个doc文件,我尝试直接调用该函数并且它工作正常

标签: node.js


【解决方案1】:

我相信您的问题只是文件是第一次创建的,但没有及时准备好返回它。第二次调用时,文件已经存在,因此可以正常工作。

我建议修改您的 createFile 以在操作完成时接受回调或返回承诺。然后使用 createFile 的完成来延迟对 res.zip() 的调用。这将确保文件在返回响应之前是完整的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-15
    • 2014-04-27
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2020-12-04
    相关资源
    最近更新 更多