Изтеглянето на файлове в локално хранилище, вместо да ги съхранявате в облачно хранилище, има няколко предимства. Те включват по-лесен достъп, достъп без интернет връзка и пълна собственост върху вашите данни.
Можете да изтеглите един или няколко файла, като използвате вградените модули Node.js. Можете също да използвате библиотека на трета страна вместо това, за да постигнете същите резултати.
Изтегляне на файлове без библиотека на трета страна
За да изтеглите файл с помощта на Node.js, без помощта на пакети на трети страни, ще ви трябват три основни модула Node.js: fs, https, и път.
The fs модулът поддържа много файлови задачи, включително четене, създаване, актуализиране, премахване и преименуване. The https модулът създава уеб сървър за обработка на заявки и доставяне на отговори. The път модул предоставя начин за взаимодействие с директория и пътища на файлове.
Използвайки тези модули, можете да изпратите HTTP GET заявка за достъп до файлов ресурс от уеб сървър и след това да направите копие на ресурса във вашата локална система.
За да започнете, импортирайте необходимите модули:
конст https = изискват('https');
конст fs = изискват('fs');
конст път = изискват("път");
Ще трябва да използвате името на файла от URL адреса като добро име по подразбиране, за да го запазите. Можете да използвате модула за път .basename() метод за получаване на име на файл от неговия URL адрес. Този метод приема аргумент път и връща последната част от пътя.
Например:
конст име на файл = path.basename (url);
След това поискайте файла от сървъра, като извикате https.get() метод. Този метод приема URL адреса като първи аргумент и функция за обратно извикване за отговора като втори аргумент
Преминете URL адрес променлива като първи аргумент и след това функция за обратно извикване за обработка, когато този метод получи поток от отговори:
https.get (url, (res) => {
})
Във функцията за обратно извикване можете да използвате fs.createWriteStream() метод за създаване на нов записваем поток, предавайки име на файл променлива като аргумент.
Например:
конст fileStream = fs.createWriteStream (име на файл);
рез.тръба(fileStream);
The createWriteStream() улеснява процеса на записване на данни във файл, особено когато работите с големи части от данни.
The тръба() метод след това изпраща потока от данни за отговор GET към fileStream обект.
За да регистрирате съобщение в конзолата, след като скриптът приключи с изтеглянето на файла, прикачете a .На() източник на събития към fileStream променлива:
fileStream.on('завършек', () => {
fileStream.близо();
конзола.log(„Изтеглянето приключи“);
});
Обектът fileStream излъчва a завършек събитие, когато е записал всички данни във файла. Хванете това чрез .На() метод и предоставя функция за обратно извикване за затваряне на fileStream и запишете съобщение в конзолата.
За по-добро изпълнение и ефективна повторна употреба на скрипта, обвийте този код във функция, която приема URL адреса като аргумент:
функциясвали файл(URL адрес) {
конст име на файл = path.basename (url);https.get (url, (res) => {
конст fileStream = fs.createWriteStream (име на файл);
рез.тръба(fileStream);
fileStream.on('завършек', () => {
fileStream.близо();
конзола.log(„Изтеглянето приключи“)
});
})
}
За да стартирате функцията, извикайте я и предайте URL адреса на файла, който искате да изтеглите:
свали файл([URL адрес на файла]);
За да стартирате скрипта, отворете вашия терминал и въведете възел последвано от името на JavaScript файла:
възел[име на скрипт]
Този скрипт ще изтегли URL адреса на файла, който сте предали на свали файл() функция и я запазете във вашата работна директория.
Отстраняване на грешки при изтегляне на файлове
В Node.js могат да възникнат специфични грешки като запис в потока, лоша връзка с услугата или проблеми със самия файл при изтегляне на файлове. Изключително важно е да регистрирате съобщения за грешки, когато възникнат тези грешки, за да можете да се справите с проблема.
Опитайте/уловете блок
Блокът try-catch е програмна структура, която ви позволява да обработвате потенциални грешки и изключения във вашия код.
Блоковете опитвам и хващам съставляват блока try...catch. Кодът на блока try се изпълнява първи, а кодът на блока catch се изпълнява, ако блокът try хвърля изключение.
опитвам {
свали файл([URL адрес на файла]);
} улов (грешка) {
конзола.log (грешка);
}
Използвайте блок try/catch, за да сте сигурни, че можете да уловите всякакви грешки, свързани с изтеглянето. След това можете да обработите всяка грешка, ако е необходимо, като например да я регистрирате в конзолата или да опитате повторно изтеглянето.
Код на състоянието на HTTP отговор
Кодовете на състоянието за HTTP отговори показват дали конкретна HTTP заявка е изпълнена успешно.
Например:
https.get (url, (res) => {
конст код = res.statusCode();
конзола.log (код)
конст fileStream = fs.createWriteStream (име на файл);
});
Ако заявката върне код на състояние извън диапазона на успех, 200-299, имаше проблем със заявката. След това проверете кода на състоянието на HTTP потърсете значението на кода на състоянието за отстраняване на грешката, ако е необходимо.
Изтегляне на множество файлове
Можете да изтеглите няколко файла едновременно, като подадете URL адресите на файловете като аргументи при изпълнение възел [име на скрипт]. За да изпълните тази задача, трябва да промените определени части от вашия скрипт.
В JavaScript аргументите се предават заедно с възел са налични в process.argv, свойство на глобалния обект Node.js. Това свойство връща масив от аргументи на командния ред. Първият елемент в този масив трябва да бъде възел, действителната команда, която изпълнявате. Второто ще бъде името на файла на скрипта, след което всеки следващ аргумент трябва да бъде URL адрес.
За да изтеглите няколко файла наведнъж, запазете масива от process.argv в променлива. След това изпълнете метода slice(), за да премахнете първите два елемента, които не са URL адреси:
конст args = process.argv;
конст urls = args.slice(2);
The парче () метод създава нов масив от избрани елементи в масив. Този метод избира от определено начало до определен (невключващ) край.
В този случай предаването на стойност 2 премахва възел името на командата и името на файла на вашия скрипт.
накрая използвайки метода на карта на JavaScript, предава всеки елемент в URL адреси масив към свали файл():
urls.map(URL адрес =>{
файл за изтегляне (url)
});
За да стартирате кода, въведете възел команда заедно с името на вашия JavaScript файл и URL адресите, които искате да изтеглите:
възел[име на скрипт]url1url2url3
Използване на библиотека на трета страна
Можете също да изтегляте файлове с помощта на библиотека на трета страна като npm Изтегли пакет.
Във вашата директория със скриптове изпълнете следната команда npm, за да инсталирате Изтегли пакет:
npm Инсталирай Изтегли
Изисквайте изтегления пакет във вашия скрипт, след което запишете аргументите на командния ред в масив:
конст изтегляне = изискват('Изтегли');
конст args = process.argv;
конст urls = args.slice(2);
Вече можете да използвате Изтегли библиотека за изтегляне на файлове. Можете да направите това по няколко начина в зависимост от вашата конкретна цел.
Например:
асинхроненфункциясвали файл(URL адреси){
изчакайтеобещание.all (urls.map((URL адрес) => изтегляне (url, "файлове")))
};
файл за изтегляне (URLS);
Декларирайте свали файл функция като асинхронени създайте a обещание да изчака, докато конкретната задача приключи с изчакайте ключова дума. Карта на URL адреси масив към Изтегли функция и предава името на локална папка—"файлове", в този случай – за съхраняване на файловете.
Изтегляне на файлове в локалната файлова система
Вградените функции на Node, като fs и https, улесняват писането на програма за изтегляне на файлове. За да го направите още по-лесно, можете да използвате модул на трета страна като изтегляне.
И двата метода ви позволяват да изтегляте файлове от отдалечен сървър и да ги записвате в локалната файлова система. Трябва да изберете най-добрия метод за вашите нужди и да го използвате в следващото си Node.js приложение.