2015-09-07 44 views
0

我想下載包含多個圖像的圖像文件夾。 我需要下載到我的本地目錄。 我下載了一個圖像給圖像名稱。 但我不明白我怎麼能爲多個圖像本身做到這一點。 這是我的代碼。如何使用nodejs將圖像文件夾從網站下載到本地目錄

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

var file = fs.createWriteStream("./downloads"); 
var request = http.get("http://www.salonsce.com/extranet/uploadfiles" + image.png, function(response) { 
    response.pipe(file); 
}); 

在此先感謝。

回答

0

要在Node.js中使用curl下載文件,您需要使用Node的child_process模塊​​。你必須使用child_process的spawn方法調用curl。爲了方便,我使用spawn而不是exec - spawn返回一個包含數據事件的流,並且不像exec那樣有緩衝區大小問題。這並不意味着執行力不如產卵;實際上我們將使用exec來使用wget下載文件。

// Function to download file using curl 
var download_file_curl = function(file_url) { 

    // extract the file name 
    var file_name = url.parse(file_url).pathname.split('/').pop(); 
    // create an instance of writable stream 
    var file = fs.createWriteStream(DOWNLOAD_DIR + file_name); 
    // execute curl using child_process' spawn function 
    var curl = spawn('curl', [file_url]); 
    // add a 'data' event listener for the spawn instance 
    curl.stdout.on('data', function(data) { file.write(data); }); 
    // add an 'end' event listener to close the writeable stream 
    curl.stdout.on('end', function(data) { 
     file.end(); 
     console.log(file_name + ' downloaded to ' + DOWNLOAD_DIR); 
    }); 
    // when the spawn child process exits, check if there were any errors and close the writeable stream 
    curl.on('exit', function(code) { 
     if (code != 0) { 
      console.log('Failed: ' + code); 
     } 
    }); 
}; 
1

更好的方法是使用另一個名爲glob的工具並行執行。像,

先用

npm install glob

然後再進行安裝,

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

var file = fs.createWriteStream("./downloads"); 

// options is optional 
//options = {}; 
glob('http://www.salonsce.com/extranet/uploadfiles/*', options, function (er, files) { 
    //you will get list of files in the directory as an array. 
    // now use your previus logic to fetch individual file 
    // the name of which can be found by iterating over files array 
    // loop over the files array. please implement you looping construct. 
    var request = http.get(files[i], function(response) { 
     response.pipe(file); 
    }); 

}); 
+0

完美的片斷語法。我將所有圖像下載到本地文件夾中。 – Kirankamana

+0

很高興知道! :) – AdityaParab

相關問題