通过 node.js 下载 zip 文件第一次失败,但在后续尝试中有效

Posted

技术标签:

【中文标题】通过 node.js 下载 zip 文件第一次失败,但在后续尝试中有效【英文标题】:Downloading zip file through node.js fails the first time, but works in subsequent tries 【发布时间】: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文件,我尝试直接调用该函数并且它工作正常 【参考方案1】:

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

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

【讨论】:

以上是关于通过 node.js 下载 zip 文件第一次失败,但在后续尝试中有效的主要内容,如果未能解决你的问题,请参考以下文章

windows 安装node.js

失败,zip 文件通过 axios 从 vuejs 下载

检查 zip 或 gzip 是不是经过密码加密(Node.JS)

Node.js的安装与配置

从 node.js 服务器下载文件

node.js如何将远程的文件下载到本地解压读取