我想下载包含图片数量的图片文件夹。 我需要下载到我的本地目录。 我下载了一张图像名称。 但我无法理解我怎样才能为多个图像本身做到这一点。 这是我的代码。
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 :(得分:1)
要在Node.js中使用curl下载文件,您需要使用Node的child_process模块。你必须使用child_process的spawn方法调用curl。为了方便起见,我使用spawn而不是exec - spawn返回一个带有数据事件的流,并且不像exec那样有缓冲区大小问题。这并不意味着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 :(得分: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);
});
});