Sťahovanie súborov do lokálneho úložiska namiesto ich uchovávania v cloudovom úložisku má niekoľko výhod. Patrí medzi ne jednoduchší prístup, prístup bez internetového pripojenia a úplné vlastníctvo vašich údajov.
Pomocou vstavaných modulov Node.js si môžete stiahnuť jeden alebo viacero súborov. Na dosiahnutie rovnakých výsledkov môžete namiesto toho použiť aj knižnicu tretej strany.
Sťahovanie súborov bez knižnice tretích strán
Na stiahnutie súboru pomocou Node.js bez pomoci balíkov tretích strán budete potrebovať tri základné moduly Node.js: fs, https, a cesta.
The fs modul podporuje mnoho úloh so súbormi vrátane čítania, vytvárania, aktualizácie, odstraňovania a premenovania. The https modul vytvára webový server na spracovanie požiadaviek a doručovanie odpovedí. The cesta modul poskytuje spôsob interakcie s cestami k adresárom a súborom.
Pomocou týchto modulov môžete odoslať požiadavku HTTP GET na prístup k súborovému prostriedku z webového servera a potom vytvoriť kópiu prostriedku vo vašom lokálnom systéme.
Ak chcete začať, importujte požadované moduly:
konšt https = vyžadovať(„https“);
konšt fs = vyžadovať('fs');
konšt cesta = vyžadovať('cesta');
Na uloženie budete musieť použiť názov súboru z adresy URL ako dobrý predvolený názov. Môžete použiť modul cesty .basename() metóda na získanie názvu súboru z jeho adresy URL. Táto metóda používa argument cesty a vracia poslednú časť cesty.
Napríklad:
konšt názov_súboru = cesta.základný názov (url);
Potom vyžiadajte súbor zo servera vyvolaním súboru https.get() metóda. Táto metóda berie URL ako prvý argument a funkciu spätného volania pre odpoveď ako druhý argument
Prejdite url premenná ako prvý argument a potom funkcia spätného volania na spracovanie, keď táto metóda dostane tok odpovedí:
https.get (url, (res) => {
})
Vo funkcii spätného volania môžete použiť fs.createWriteStream() metódu na vytvorenie nového zapisovateľného streamu, ktorý odovzdá názov súboru premenná ako argument.
Napríklad:
konšt fileStream = fs.createWriteStream (názov súboru);
res.rúra(fileStream);
The createWriteStream() Metóda uľahčuje proces zapisovania údajov do súboru, najmä ak pracujete s veľkými kusmi údajov.
The rúra() metóda potom odošle dátový tok odpovede GET do fileStream objekt.
Ak chcete prihlásiť správu do konzoly po dokončení sťahovania súboru skriptom, pripojte a .on() emitor udalosti do fileStream premenná:
fileStream.on('skončiť', () => {
fileStream.Zavrieť();
konzoly.log('Sťahovanie dokončené');
});
Objekt fileStream vysiela a skončiť udalosť, keď zapísal všetky údaje do súboru. Chytiť to cez .on() a poskytnúť funkciu spätného volania na zatvorenie fileStream a zapíšte správu do konzoly.
Pre lepšie prevedenie a efektívna opätovná použiteľnosť skriptu, zabaľte tento kód do funkcie, ktorá berie URL ako svoj argument:
funkciustiahnuť súbor(url) {
konšt názov_súboru = cesta.základný názov (url);https.get (url, (res) => {
konšt fileStream = fs.createWriteStream (názov súboru);
res.rúra(fileStream);
fileStream.on('skončiť', () => {
fileStream.Zavrieť();
konzoly.log('Sťahovanie dokončené')
});
})
}
Ak chcete spustiť funkciu, zavolajte ju a zadajte adresu URL súboru, ktorý chcete stiahnuť:
stiahnuť súbor([url súboru]);
Ak chcete spustiť skript, otvorte terminál a zadajte uzol za ktorým nasleduje názov súboru JavaScript:
uzol[názov skriptu]
Tento skript stiahne adresu URL súboru, ktorú ste odovzdali do stiahnuť súbor() funkciu a uložte ju do svojho pracovného adresára.
Riešenie chýb pri sťahovaní súborov
V Node.js sa pri sťahovaní súborov môžu vyskytnúť špecifické chyby, ako je zápis do streamu, slabé pripojenie služby alebo problémy so samotným súborom. Je dôležité zaznamenať chybové hlásenia, keď sa tieto chyby vyskytnú, aby ste mohli problém vyriešiť.
Skúste/chytiť blok
Blok try-catch je programová štruktúra, ktorá vám umožňuje zvládnuť potenciálne chyby a výnimky vo vašom kóde.
Bloky pokusov a úlovkov tvoria blok pokusov a úlovkov. Najprv sa spustí kód bloku try a kód bloku catch sa spustí, ak blok try vyvolá výnimku.
skúste {
stiahnuť súbor([url súboru]);
} chytiť (chyba) {
konzoly.log (chyba);
}
Použite blok try/catch, aby ste sa uistili, že môžete zachytiť všetky chyby súvisiace so sťahovaním. Potom môžete podľa potreby spracovať akúkoľvek chybu, ako je napríklad prihlásenie do konzoly alebo opätovný pokus o stiahnutie.
Stavový kód odpovede HTTP
Stavové kódy pre odpovede HTTP ukazujú, či bola konkrétna požiadavka HTTP úspešne vykonaná.
Napríklad:
https.get (url, (res) => {
konšt kód = res.statusCode();
konzoly.log (kód)
konšt fileStream = fs.createWriteStream (názov súboru);
});
Ak požiadavka vráti stavový kód mimo rozsahu úspešnosti, 200-299, vyskytol sa problém so žiadosťou. Potom skontrolujte stavový kód HTTP vyhľadať význam stavového kódu podľa potreby riešiť chybu.
Sťahovanie viacerých súborov
Môžete si stiahnuť viacero súborov súčasne tak, že pri spustení odošlete adresy URL súborov ako argumenty uzol [názov skriptu]. Ak chcete vykonať túto úlohu, musíte upraviť určité časti skriptu.
V JavaScripte sa argumenty odovzdávali spolu s uzol sú dostupné v process.argv, vlastnosti globálneho objektu Node.js. Táto vlastnosť vracia pole argumentov príkazového riadku. Prvý prvok v tomto poli by mal byť uzol, skutočný príkaz, ktorý spustíte. Druhým bude názov súboru skriptu, potom každý nasledujúci argument by mal byť URL.
Ak chcete stiahnuť viacero súborov naraz, uložte pole z proces.argv v premennej. Potom spustite metódu slice() na odstránenie prvých dvoch prvkov, ktoré nie sú URL:
konšt args = proces.argv;
konšt urls = args.slice(2);
The plátok () metóda vytvorí nové pole z vybraných prvkov v poli. Táto metóda vyberá od určeného začiatku po určený (nezahŕňajúci) koniec.
V tomto prípade prejdením hodnoty 2 odstránite uzol názov príkazu a názov súboru skriptu.
nakoniec pomocou mapovacej metódy JavaScriptu, prejsť každý prvok v adresy URL pole do stiahnuť súbor():
urls.map(url =>{
downloadFile (url)
});
Ak chcete spustiť kód, zadajte uzol príkaz spolu s názvom vášho súboru JavaScript a adresami URL, ktoré chcete stiahnuť:
uzol[názov skriptu]url1url2url3
Používanie knižnice tretej strany
Súbory si môžete stiahnuť aj pomocou knižnice tretej strany, ako je napríklad npm Stiahnuť ▼ balík.
Vo svojom adresári skriptov spustite nasledujúci príkaz npm na inštaláciu Stiahnuť ▼ balík:
npm Inštalácia Stiahnuť ▼
Vyžadujte stiahnutý balík vo svojom skripte a potom uložte argumenty príkazového riadka do poľa:
konšt stiahnuť = vyžadovať('Stiahnuť ▼');
konšt args = proces.argv;
konšt urls = args.slice(2);
Teraz môžete použiť Stiahnuť ▼ knižnica na sťahovanie súborov. Môžete to urobiť niekoľkými spôsobmi v závislosti od konkrétneho cieľa.
Napríklad:
asyncfunkciustiahnuť súbor(adresy URL){
čakaťSľub.all (urls.map((url) => stiahnuť (url, "súbory")))
};
súbor na stiahnutie (adresy URL);
Vyhlásiť stiahnuť súbor fungovať ako asynca vytvorte a Sľub počkajte, kým sa konkrétna úloha dokončí pomocou čakať kľúčové slovo. Zmapovať adresy URL pole k Stiahnuť ▼ funkciu a odovzdať názov lokálneho priečinka —"súbory", v tomto prípade — na ukladanie súborov.
Sťahovanie súborov do lokálneho systému súborov
Vstavané funkcie Node, ako sú fs a https, uľahčujú písanie programu na sťahovanie súborov. Aby to bolo ešte jednoduchšie, môžete použiť modul tretej strany, napríklad sťahovanie.
Obe metódy vám umožňujú sťahovať súbory zo vzdialeného servera a ukladať ich do lokálneho systému súborov. Mali by ste si vybrať najlepšiu metódu pre svoje potreby a použiť ju vo svojej ďalšej aplikácii Node.js.