2015-09-07 2 views
0

Je voudrais télécharger le dossier d'image qui contient le nombre d'images. Je dois télécharger dans mon répertoire local. J'ai téléchargé une image donnant le nom de l'image. Mais je ne pouvais pas comprendre comment je peux le faire pour plusieurs images lui-même. Voici mon code.Comment télécharger le dossier d'image du site Web au répertoire local using 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); 
}); 

Merci d'avance.

Répondre

0

Pour télécharger des fichiers en utilisant curl dans Node.js, vous devrez utiliser le module child_process de Node. Vous devez appeler curl en utilisant la méthode spawn de child_process. pour cela j'utilise spawn au lieu d'exec pour des raisons de commodité - spawn retourne un flux avec un événement data et n'a pas de problème de taille de buffer contrairement à exec. Cela ne signifie pas que exec est inférieur à spawn; en fait, nous allons utiliser exec pour télécharger des fichiers en utilisant 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

Une meilleure façon de le faire serait d'utiliser un autre outil appelé glob en parallèle. Comme,

d'abord l'installer avec

npm install glob

Et puis,

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

syntaxe extrait parfait. J'ai téléchargé toutes les images dans mon dossier local. – Kirankamana

+0

Bon à savoir! :) – AdityaParab