Failide allalaadimisel kohalikku salvestusruumi selle asemel, et neid pilvesalvestuses hoida, on mitmeid eeliseid. Nende hulka kuuluvad lihtsam juurdepääs, juurdepääs ilma Interneti-ühenduseta ja teie andmete täielik omandiõigus.
Sisseehitatud Node.js-moodulite abil saate alla laadida üksikuid ja mitut faili. Samade tulemuste saavutamiseks võite selle asemel kasutada ka kolmanda osapoole teeki.
Failide allalaadimine ilma kolmanda osapoole raamatukoguta
Node.js-i abil faili allalaadimiseks ilma kolmanda osapoole pakettide abita vajate kolme põhilist Node.js-moodulit. fs, httpsja tee.
The fs moodul toetab paljusid failiülesandeid, sealhulgas lugemine, loomine, värskendamine, eemaldamine ja ümbernimetamine. The https moodul loob päringute haldamiseks ja vastuste edastamiseks veebiserveri. The tee moodul pakub võimalust suhelda kataloogide ja failiteedega.
Neid mooduleid kasutades saate saata HTTP GET-päringu veebiserverist failiressursile juurdepääsuks ja seejärel teha ressursist koopia oma kohalikku süsteemi.
Alustuseks importige vajalikud moodulid:
konst https = nõuda("https");
konst fs = nõuda('fs');
konst tee = nõuda('tee');
Selle salvestamiseks peate kasutama URL-ist pärinevat failinime hea vaikenimena. Võite kasutada tee moodulit .basename() meetod faili nime saamiseks selle URL-ist. See meetod võtab argumendi tee ja tagastab tee viimase osa.
Näiteks:
konst failinimi = path.basename (url);
Seejärel taotlege faili serverist, kutsudes esile https.get() meetod. See meetod võtab esimese argumendina URL-i ja teise argumendina vastuse tagasihelistamisfunktsiooni
Mööda url muutuja esimese argumendina ja seejärel tagasihelistamisfunktsioon töötlemiseks, kui see meetod saab vastusevoo:
https.get (url, (res) => {
})
Tagasihelistamise funktsioonis saate kasutada fs.createWriteStream() meetod uue kirjutatava voo loomiseks, läbides faili nimi muutuja argumendina.
Näiteks:
konst fileStream = fs.createWriteStream (failinimi);
res.toru(fileStream);
The createWriteStream() meetod hõlbustab andmete faili kirjutamise protsessi, eriti kui käsitlete suuri andmetükke.
The toru () meetod saadab seejärel GET-vastuse andmevoo seadmele fileStream objektiks.
Sõnumi logimiseks konsooli pärast skripti faili allalaadimise lõpetamist lisage a .peal() sündmuse emitter fileStream muutuja:
fileStream.on('lõpetama', () => {
fileStream.Sulge();
konsool.log('Allalaadimine on lõpetatud');
});
FileStreami objekt kiirgab a lõpetama sündmus, kui ta on kõik andmed faili kirjutanud. Püüdke see läbi .peal() meetod ja pakkuge sulgemiseks tagasihelistamise funktsioon fileStream ja logige sõnum konsooli.
Parema täitmise ja tõhus skripti korduvkasutatavus, mähkige see kood funktsiooni, mille argumendiks on URL:
funktsioonifaili allalaadimine(url) {
konst failinimi = path.basename (url);https.get (url, (res) => {
konst fileStream = fs.createWriteStream (failinimi);
res.toru(fileStream);
fileStream.on('lõpetama', () => {
fileStream.Sulge();
konsool.log('Allalaadimine on lõpetatud')
});
})
}
Funktsiooni käivitamiseks helistage sellele ja edastage allalaaditava faili URL:
faili allalaadimine([faili url]);
Skripti käivitamiseks avage terminal ja sisestage sõlm millele järgneb JavaScripti faili nimi:
sõlm[skripti nimi]
See skript laadib alla faili URL-i, mille edastasite downloadFile() funktsiooni ja salvestage see oma töökataloogi.
Vigade käsitlemine failide allalaadimisel
Funktsioonis Node.js võivad failide allalaadimisel ilmneda konkreetsed vead, nagu voogu kirjutamine, kehv teenindusühendus või probleemid faili endaga. Probleemi lahendamiseks on ülioluline nende tõrketeadete logimine.
Proovige / püüdke blokeerida
Try-catch plokk on programmeerimisstruktuur, mis võimaldab teil käsitleda koodi võimalikke vigu ja erandeid.
Proovi-ja püüda plokid moodustavad proovi...püüa ploki. Esmalt käivitub prooviploki kood ja püüdmisploki kood, kui try-plokk teeb erandi.
proovi {
faili allalaadimine([faili url]);
} püüda (viga) {
konsool.log (viga);
}
Kasutage proovi/püüdmise plokki, et tagada allalaadimisega seotud vigade tabamine. Seejärel saate vajaduse korral mis tahes tõrkeid käsitleda, näiteks logida need konsooli või proovida uuesti alla laadida.
HTTP vastuse olekukood
HTTP vastuste olekukoodid näitavad, kas konkreetne HTTP-päring on edukalt täidetud.
Näiteks:
https.get (url, (res) => {
konst kood = res.statusCode();
konsool.log (kood)
konst fileStream = fs.createWriteStream (failinimi);
});
Kui päring tagastab olekukoodi väljaspool eduvahemikku, 200-299, tekkis taotlusega probleem. Seejärel kontrollige HTTP olekukoodi otsige olekukoodi tähendust veaga tegelema vastavalt vajadusele.
Mitme faili allalaadimine
Saate korraga alla laadida mitu faili, edastades faili URL-id käivitamisel argumentidena sõlm [skripti nimi]. Selle ülesande täitmiseks peate muutma oma skripti teatud osi.
JavaScriptis edastati argumendid kõrvuti sõlm käsud on saadaval failis process.argv, mis on globaalse objekti Node.js atribuut. See atribuut tagastab käsurea argumentide massiivi. Selle massiivi esimene element peaks olema sõlm, tegelik käsk, mida käivitate. Teine on skripti failinimi, seejärel peaks iga järgmine argument olema URL.
Mitme faili korraga allalaadimiseks salvestage massiiv aadressilt protsess.argv muutujas. Seejärel käivitage meetod slice(), et eemaldada kaks esimest elementi, mis ei ole URL-id:
konst args = protsess.argv;
konst urls = args.slice(2);
The slice () meetod loob massiivi valitud elementidest uue massiivi. See meetod valib kindlaksmääratud algusest määratud (mittekaasava) lõpuni.
Sel juhul eemaldab väärtuse 2 läbimine sõlm käsu nimi ja skripti failinimi.
Lõpuks kasutades JavaScripti kaardimeetodit, edastage iga element URL-id massiivi juurde downloadFile():
urls.map(url =>{
allalaadimisfail (url)
});
Koodi käivitamiseks sisestage sõlm käsk koos JavaScripti faili nime ja URL-idega, mida soovite alla laadida:
sõlm[skripti nimi]url1url2url3
Kolmanda osapoole raamatukogu kasutamine
Faile saate alla laadida ka kolmanda osapoole teegi (nt npm) abil lae alla pakett.
Käivitage oma skriptikataloogis järgmine npm-käsk, et installida lae alla pakett:
npm installida lae alla
Nõua oma skriptis allalaaditud paketti, seejärel salvestage käsurea argumendid massiivi:
konst allalaadimine = nõuda('lae alla');
konst args = protsess.argv;
konst urls = args.slice(2);
Nüüd saate kasutada lae alla raamatukogu failide allalaadimiseks. Sõltuvalt konkreetsest eesmärgist saate seda teha mitmel viisil.
Näiteks:
asünkrfunktsioonifaili allalaadimine(URL-id){
ootamaLubadus.all (urls.map((url) => alla laadida (url, "failid")))
};
downloadFile (URL-id);
Deklareerige faili allalaadimine toimima kui asünkrja looge a Lubadus ootama, kuni konkreetne ülesanne on lõpetatud ootama märksõna. Kaardistada URL-id massiivi juurde lae alla funktsioon ja edasta kohaliku kausta nimi -"failid", antud juhul – failide salvestamiseks.
Failide allalaadimine kohalikku failisüsteemi
Node'i sisseehitatud funktsioonid, nagu fs ja https, muudavad faili allalaadija kirjutamise lihtsaks. Selle veelgi lihtsamaks muutmiseks võite kasutada kolmanda osapoole moodulit, näiteks allalaadimist.
Mõlemad meetodid võimaldavad teil faile kaugserverist alla laadida ja kohalikku failisüsteemi salvestada. Peaksite valima oma vajadustele parima meetodi ja kasutama seda järgmises Node.js-i rakenduses.