我有一台路由器可以下载某些文件。但是,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);
});
答案 0 :(得分:0)
我相信你的问题只是文件是第一次创建的,但没有准备好及时返回它。第二次你打电话时,文件已经存在,所以它可以工作。
我建议修改你的createFile,以便在操作完成时进行回调或返回一个promise。然后使用createFile的完成来延迟对res.zip()的调用。这将确保文件在返回响应之前完成。