node.js - 如何从远程服务器下载一堆文件,并使用 Node.js 按特定顺序连接它们?

标签 node.js javascript

我正在尝试读取服务器上一堆 javascript 文件的内容,然后将它们连接成一个新的本地文件。文件必须按特定顺序连接(在数组中指定)。到目前为止,这是我所拥有的:

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

var commonWebFiles = getCommonWebDependenciesInOrder();
var fileContents = [];
var path = '/folder/';

fs.mkdir("target");
for(var i = 0, l = commonWebFiles.length; i < l; ++i){
    getFileContents(path, commonWebFiles[i]);
}

function getCommonWebDependenciesInOrder(){
    //Hit manager to get an correctly ordered array of common web dependencies
    //Stub
    return [
        'file1.js',
        'file2.js',
        'file3.js'
    ];
 };

function getFileContents(path, filename){
    var contents = "";
    var writeStream = fs.createWriteStream("target/" + filename, {'flags': 'a'});
    var options = {
        host: 'ahost.net',
        port: 80,
        path: path + filename
    };
    var req = http.get(options, function(res) {
         res.on('data', function(chunk) {
             contents += chunk;
    });
    res.on('end', function() {
        writeStream.write(contents, encoding='binary');
        writeStream.end();
        fileContents[filename] = contents;

     });

     }).on('error', function(e) {
         console.log("Got error: " + e.message);
     });
};

这会下载文件并在本地重新创建它们,但看起来有点笨拙。当我试图直接从一组循环的请求中直接写入单个文件时,我的 block 乱序了……我觉得一定有更简单的方法……

提前致谢。

最佳答案

使用asyncrequest :

var fs = require('fs'),
    async = require('async'),
    request = require('request');

// Utility function to overcome request's callback (err, response, body) where we're only interested in err and body
function simpleRequest(url, callback) {
    request(url, function(err, response, body) {
        callback(err, body);
    });
}

async.map(urls, simpleRequest, function(err, results) {
    if(err)
        return console.error(err);
    fs.writeFile(outfile, results.join(''));
});

关于node.js - 如何从远程服务器下载一堆文件,并使用 Node.js 按特定顺序连接它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620435/

相关文章:

javascript - 如何在 google-maps-react 中获取所有标记

javascript - 如何将数据输入 Javascript 进行客户端处理?

node.js - MongoError : Can't canonicalize query: BadValue bad order array [2]

javascript - skygear/react-chat-demo app.html 不起作用

Javascript createElement 在 IE 中不起作用

javascript - Ajax 安全

javascript - 如何结束()文件流

javascript - 使用正则表达式提取元标记

javascript - 这个回调函数示例如何工作?

javascript - 检测 Mongoose 事件的语法是什么?