Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Преузимање датотека у локалну меморију уместо да их чувате у складишту у облаку има неколико предности. То укључује лакши приступ, приступ без интернет везе и потпуно власништво над вашим подацима.

Можете преузети једну и више датотека користећи уграђене модуле Ноде.јс. Уместо тога можете користити и библиотеку треће стране да бисте постигли исте резултате.

Преузимање датотека без библиотеке треће стране

Да бисте преузели датотеку користећи Ноде.јс, без помоћи пакета независних произвођача, биће вам потребна три основна модула Ноде.јс: фс, хттпс, и пут.

Тхе фс модул подржава многе задатке датотека укључујући читање, креирање, ажурирање, уклањање и преименовање. Тхе хттпс модул креира веб сервер за обраду захтева и испоруку одговора. Тхе пут модул пружа начин интеракције са путањама директоријума и датотека.

Користећи ове модуле, можете послати ХТТП ГЕТ захтев за приступ ресурсу датотеке са веб сервера, а затим направити копију ресурса у вашем локалном систему.

За почетак увезите потребне модуле:

конст хттпс = захтевају('хттпс');
конст фс = захтевају('фс');
конст пут = захтевају('пут');

Мораћете да користите име датотеке из УРЛ-а као добро подразумевано име да бисте га сачували. Можете користити модул путање .басенаме() метод за добијање имена датотеке из њене УРЛ адресе. Овај метод узима аргумент путање и враћа последњи део путање.

На пример:

конст име датотеке = патх.басенаме (урл);

Затим затражите датотеку са сервера позивањем на хттпс.гет() методом. Овај метод узима УРЛ као први аргумент и функцију повратног позива за одговор као други аргумент

Пасс тхе урл променљива као први аргумент, а затим функција повратног позива за обраду када овај метод прими ток одговора:

хттпс.гет (урл, (рес) => {
})

У функцији повратног позива можете користити фс.цреатеВритеСтреам() метод за креирање новог стрима за писање, прослеђивање назив документа променљива као аргумент.

На пример:

конст филеСтреам = фс.цреатеВритеСтреам (име датотеке);
рес.цев(филеСтреам);

Тхе цреатеВритеСтреам() метода олакшава процес писања података у датотеку, посебно када рукујете великим комадима података.

Тхе цев() метода затим шаље ГЕТ ток података одговора на филеСтреам објекат.

Да бисте пријавили поруку на конзолу након што скрипта заврши преузимање датотеке, приложите а .на() емитер догађаја на филеСтреам променљива:

филеСтреам.он('заврши', () => {
филеСтреам.Близу();
конзола.Пријава('Преузимање је завршено');
});

ФилеСтреам објекат емитује а завршити догађај када је записао све податке у датотеку. Ухватите ово преко .на() метод и обезбеди функцију повратног позива за затварање филеСтреам и пријавите поруку на конзолу.

За боље извођење и ефикасна поновна употреба скрипте, умотајте овај код у функцију која узима УРЛ као свој аргумент:

функцијаскини докуменат(урл) {
конст име датотеке = патх.басенаме (урл);

хттпс.гет (урл, (рес) => {
конст филеСтреам = фс.цреатеВритеСтреам (име датотеке);
рес.цев(филеСтреам);

филеСтреам.он('заврши', () => {
филеСтреам.Близу();
конзола.Пријава('Преузимање је завршено')
});
})
}

Да бисте покренули функцију, позовите је и проследите УРЛ датотеке коју желите да преузмете:

скини докуменат([урл датотеке]);

Да бисте покренули скрипту, отворите свој терминал и унесите чвор праћено именом ЈаваСцрипт датотеке:

чвор[име скрипте]

Ова скрипта ће преузети УРЛ датотеке коју сте проследили скини докуменат() функцију и сачувајте је у свом радном директоријуму.

Руковање грешкама приликом преузимања датотека

У Ноде.јс-у, специфичне грешке као што је писање у стрим, лоша сервисна веза или проблеми са самом датотеком могу се појавити приликом преузимања датотека. Кључно је да евидентирате поруке о грешци када се ове грешке десе да бисте могли да решите проблем.

Пробај/Ухвати Блок

Блок три-цатцх је програмска структура која вам омогућава да рукујете потенцијалним грешкама и изузецима у вашем коду.

Блокови три-анд-цатцх чине блок три...цатцх. Код блока три се покреће први, а код блока цатцх се покреће ако блок три избаци изузетак.

покушати {
скини докуменат([урл датотеке]);
} улов (грешка) {
конзола.лог (грешка);
}

Користите блок три/цатцх да бисте били сигурни да можете ухватити све грешке везане за преузимање. Затим можете да обрађујете било коју грешку по потреби, као што је евидентирање на конзоли или поновни покушај преузимања.

ХТТП код статуса одговора

Статусни кодови за ХТТП одговоре показују да ли је одређени ХТТП захтев успешно обављен.

На пример:

хттпс.гет (урл, (рес) => {
конст цоде = рес.статусЦоде();
конзола.лог (код)
конст филеСтреам = фс.цреатеВритеСтреам (име датотеке);
});

Ако захтев врати статусни код изван опсега успеха, 200-299, дошло је до проблема са захтевом. Затим проверите ХТТП статусни код потражите значење статусног кода по потреби поступити са грешком.

Преузимање више датотека

Можете преузети више датотека истовремено тако што ћете проследити УРЛ-ове датотека као аргументе приликом покретања чвор [име скрипте]. Да бисте извршили овај задатак, морате да измените одређене делове скрипте.

У ЈаваСцрипт-у, аргументи се прослеђују поред чвор команде су доступне у процесс.аргв, својству глобалног објекта Ноде.јс. Ово својство враћа низ аргумената командне линије. Први елемент у овом низу треба да буде чвор, стварна команда коју покрећете. Други ће бити име датотеке скрипте, а онда сваки следећи аргумент треба да буде УРЛ.

Да бисте преузели више датотека одједном, сачувајте низ из процес.аргв у променљивој. Затим покрените метод слице() да бисте уклонили прва два елемента, који нису УРЛ адресе:

конст аргс = процесс.аргв;
конст урлс = аргс.слице(2);

Тхе слице() метод креира нови низ од изабраних елемената у низу. Овај метод бира од наведеног почетка до одређеног (неинклузивног) краја.

У овом случају, прослеђивање вредности од 2 уклања чвор име команде и име ваше датотеке скрипте.

коначно, користећи ЈаваСцрипт метод мапе, проследите сваки елемент у урлс низ за скини докуменат():

урлс.мап(урл =>{
преузми датотеку (урл)
});

Да бисте покренули код, унесите чвор команду заједно са именом ваше ЈаваСцрипт датотеке и УРЛ адресама које желите да преузмете:

чвор[име скрипте]урл1урл2урл3

Коришћење библиотеке треће стране

Такође можете преузети датотеке користећи библиотеку треће стране као што је нпм преузимање пакет.

Унутар директоријума скрипти покрените следећу нпм команду да бисте инсталирали преузимање пакет:

нпм инсталирај преузимање

Захтевајте преузети пакет у својој скрипти, а затим сачувајте аргументе командне линије у низу:

конст преузимање = захтевају('преузимање');
конст аргс = процесс.аргв;
конст урлс = аргс.слице(2);

Сада можете користити преузимање библиотека за преузимање датотека. То можете учинити на неколико начина у зависности од вашег циља.

На пример:

асинцфункцијаскини докуменат(урлс){
чекатиОбећавам.алл (урлс.мап((урл) => преузимање (урл, "фајлови")))
};

довнлоадФиле (урлс);

Изјавите скини докуменат функција као асинц, и креирајте а Обећавам да сачека док се одређени задатак не заврши са чекати кључна реч. Мап тхе урлс низ за преузимање функцију и проследите име локалне фасцикле—"фајлови", у овом случају—за чување датотека у.

Преузимање датотека у локални систем датотека

Уграђене функције чвора, као што су фс и хттпс, олакшавају писање програма за преузимање датотека. Да бисте то учинили још лакшим, можете користити модул треће стране као што је преузимање.

Обе методе вам омогућавају да преузмете датотеке са удаљеног сервера и сачувате их у локалном систему датотека. Требало би да изаберете најбољи метод за своје потребе и користите га у својој следећој Ноде.јс апликацији.