gpt4 book ai didi

node.js - 在 Node 中获取 100 个 zip 文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:22 25 4
gpt4 key购买 nike

所以我试图从服务器获取一堆文件。目前的代码基本如下。

var http = require('http');
var fs = require('fs');

var arr = [{id:'fileOne', id:'fileTwo', id:'fileThree',....];

function fetchData() {
for (var i = 0; i < arr.length; i++) {
var file = fs.createWriteStream("../path/file.zip");
var request = http.get("url/AFG_adm.zip", function(response) {
response.pipe(file);
});
}
}

我认为这不是最好的方法,试图找出如何处理错误,如何确保在下一次迭代之前加载文件......非常感谢任何帮助。

最佳答案

您应该使用async模块来处理异步部分,而且request模块将为您节省很多精力。

您可以使用 async.cargoasync.map 以多种方式处理此问题。其理论是将事物或一系列事物分组,然后根据您想要的方式采取行动,但以异步方式。

因此,要下载的文件数组的基本 .map 如下所示。

// required modules
var async = require('async');
var request = require('request');
// array of urls
var URLs = ['hxxp://...ZipFile1.zip', 'hxxp://...ZipFile2.zip'];
// destination directory
var destinationDirectory = 'downloads';
// asyncDownload function
function asyncDownload(url, callback) {
// get filename
var filename = url.substring(url.lastIndexOf(".") + 1);
// create write stream
var stream = fs.createWriteStream(destinationDirectory + "/" + filename);
// listen for open event to start request and pipe
stream.on('open', function () {
request(url).pipe(stream);
})
// when finish , call callback
stream.on('finish', function () {
callback(null, destinationDirectory + "/" + filename);
})
}

async.map(
URLs, asyncDownload, function (err, results) {
console.log(results);
});

关于node.js - 在 Node 中获取 100 个 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com