通过 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 文件第一次失败,但在后续尝试中有效的主要内容,如果未能解决你的问题,请参考以下文章