Herunterladen von Dateien mit node.js, Streams und Versprechungen
Hier ist ein Ausschnitt aus meinem Code:
var processListing = function (directoryItems) {
console.log('foreach');
var itemsToDownload = [];
directoryItems.forEach(function (element, index, array) {
//Ignore directories
if (element.type === 'd') {
console.log('directory ' + element.name);
return;
}
//Ignore non zips
if (path.extname(element.name) !== '.zip') {
console.log('ignoring ' + element.name);
return;
}
//Download zip
itemsToDownload.push({
source: element.name,
destination: element.name
});
//aftpSystem.downloadFile(element.name, element.name);
});
console.log('after foreach');
return itemsToDownload;
};
var getFiles = function () {
console.log('got files');
return fs.readdirAsync(process.cwd() + "/zips/").then(function (files) {
return files.filter(function (filename) {
return path.extname(filename) === '.zip';
});
});
};
aFtpClient. //this has been promisified
listAsync(). //so calls methodAsync
then(processListing).
map(function (object) {
return processItem(object).then(function (processResult) {
return {
input: object,
result: processResult
};
});
}).
map(function (downloadItem) {
console.log('downloading files');
downloadItem.result.once('close', function () {
console.log('closed');
});
return downloadItem.result.pipe(fs.createWriteStream(process.cwd() + "/zips/" + downloadItem.input.destination));
}).
then(getFiles).
Ich versuche, Versprechen zu verwenden, um Elemente über FTP herunterzuladen. Momentan lädt es die erste Datei herunter, schlägt jedoch bei nachfolgenden Dateien fehl. Ich bin neu in Node, aber ziemlich zuversichtlich, dass meine zweite Kartenfunktion ein Versprechen abgeben muss, aber ich konnte nach zahlreichen Versuchen nicht herausfinden, wie. ich benutzebluebird
Für Versprechungen kann ich aber nicht sehen, wie ich damit umgehen soll und Streams.
Könnten Sie mich in die richtige Richtung weisen?
Vielen Dank