Tiedostojen lataamisella paikalliseen tallennustilaan sen sijaan, että niitä säilytetään pilvitallennustilassa, on useita etuja. Näitä ovat helpompi pääsy, pääsy ilman Internet-yhteyttä ja tietojesi täydellinen omistajuus.
Voit ladata yksittäisiä ja useita tiedostoja käyttämällä sisäänrakennettuja Node.js-moduuleja. Voit myös käyttää kolmannen osapuolen kirjastoa saavuttaaksesi samat tulokset.
Tiedostojen lataaminen ilman kolmannen osapuolen kirjastoa
Tarvitset kolme Node.js-ydinmoduulia ladataksesi tiedoston Node.js: n avulla ilman kolmannen osapuolen paketteja: fs, https, ja polku.
The fs moduuli tukee monia tiedostotehtäviä, mukaan lukien lukeminen, luominen, päivittäminen, poistaminen ja uudelleennimeäminen. The https moduuli luo verkkopalvelimen käsittelemään pyyntöjä ja toimittamaan vastauksia. The polku moduuli tarjoaa tavan olla vuorovaikutuksessa hakemisto- ja tiedostopolkujen kanssa.
Näiden moduulien avulla voit lähettää HTTP GET -pyynnön käyttääksesi tiedostoresurssia verkkopalvelimelta ja kopioida sitten resurssista paikalliseen järjestelmääsi.
Aloita tuomalla tarvittavat moduulit:
konst https = vaatia('https');
konst fs = vaatia('fs');
konst polku = vaatia('polku');
Sinun on käytettävä URL-osoitteessa olevaa tiedostonimeä hyvänä oletusnimenä tallentaaksesi sen. Voit käyttää polkumoduulia .basename() menetelmä saada tiedoston nimi sen URL-osoitteesta. Tämä menetelmä ottaa polun argumentin ja palauttaa polun viimeisen osan.
Esimerkiksi:
konst tiedostonimi = polku.kantanimi (url);
Pyydä sitten tiedosto palvelimelta kutsumalla https.get() menetelmä. Tämä menetelmä ottaa URL-osoitteen ensimmäiseksi argumentiksi ja takaisinkutsufunktion vastaukselle toiseksi argumentiksi
Anna minulle url muuttuja ensimmäisenä argumenttina ja sitten takaisinsoittofunktio käsittelyä varten, kun tämä menetelmä vastaanottaa vastausvirran:
https.get (url, (res) => {
})
Takaisinsoittotoiminnossa voit käyttää fs.createWriteStream() menetelmä uuden kirjoitettavan virran luomiseksi ohittamalla Tiedoston nimi muuttuja argumenttina.
Esimerkiksi:
konst fileStream = fs.createWriteStream (tiedostonimi);
res.putki(fileStream);
The createWriteStream() menetelmä helpottaa tietojen kirjoittamista tiedostoon, varsinkin kun käsittelet suuria tietopaloja.
The putki() -menetelmä lähettää sitten GET-vastausdatavirran fileStream esine.
Jos haluat kirjata viestin konsoliin, kun komentosarja on ladannut tiedoston, liitä a .päällä() tapahtuman lähettäjä fileStream muuttuja:
fileStream.on('suorittaa loppuun', () => {
fileStream.kiinni();
konsoli.Hirsi('Lataus valmis');
});
FileStream-objekti lähettää a suorittaa loppuun tapahtuma, kun se on kirjoittanut kaikki tiedot tiedostoon. Ota tämä talteen .päällä() -menetelmää ja tarjoa takaisinsoittotoiminto sulkeaksesi fileStream ja kirjaa viesti konsoliin.
Parempaan toteutukseen ja tehokas skriptien uudelleenkäytettävyys, kääri tämä koodi funktioon, joka käyttää URL-osoitetta argumenttina:
toimintolataa tiedosto(url) {
konst tiedostonimi = polku.kantanimi (url);https.get (url, (res) => {
konst fileStream = fs.createWriteStream (tiedostonimi);
res.putki(fileStream);
fileStream.on('suorittaa loppuun', () => {
fileStream.kiinni();
konsoli.Hirsi('Lataus valmis')
});
})
}
Suorita toiminto kutsumalla sitä ja välittämällä ladattavan tiedoston URL-osoite:
lataa tiedosto([tiedoston url]);
Suorita komentosarja avaamalla pääte ja syöttämällä solmu jota seuraa JavaScript-tiedoston nimi:
solmu[käsikirjoituksen nimi]
Tämä skripti lataa tiedoston URL-osoitteen, jonka välitit lataa tiedosto() funktio ja tallenna se työhakemistoosi.
Virheiden käsittely tiedostoja ladattaessa
Node.js: ssa tiedostoja ladattaessa saattaa ilmetä tiettyjä virheitä, kuten streamiin kirjoittaminen, huono palveluyhteys tai ongelmia itse tiedostossa. On ratkaisevan tärkeää kirjata lokiin virheilmoitukset, kun nämä virheet tapahtuvat, jotta ongelma voidaan ratkaista.
Kokeile/Catch Block
Try-catch-lohko on ohjelmointirakenne, jonka avulla voit käsitellä mahdollisia virheitä ja poikkeuksia koodissasi.
Try-and-catch-lohkot muodostavat try...catch-lohkon. Try-lohkon koodi suoritetaan ensin ja catch-lohkon koodi suoritetaan, jos try-lohko heittää poikkeuksen.
yrittää {
lataa tiedosto([tiedoston url]);
} ottaa kiinni (virhe) {
konsoli.log (virhe);
}
Käytä try/catch-estoa varmistaaksesi, että pystyt havaitsemaan kaikki lataukseen liittyvät virheet. Tämän jälkeen voit käsitellä mitä tahansa virhettä tarpeen mukaan, kuten kirjata ne konsoliin tai yrittää latausta uudelleen.
HTTP-vastauksen tilakoodi
HTTP-vastausten tilakoodit osoittavat, onko tietty HTTP-pyyntö suoritettu onnistuneesti.
Esimerkiksi:
https.get (url, (res) => {
konst koodi = res.statusCode();
konsoli.log (koodi)
konst fileStream = fs.createWriteStream (tiedostonimi);
});
Jos pyyntö palauttaa tilakoodin onnistumisalueen ulkopuolella, 200-299, pyynnössä oli ongelma. Tarkista sitten HTTP-tilakoodi katso tilakoodin merkitys korjaamaan virheen tarpeen mukaan.
Useiden tiedostojen lataaminen
Voit ladata useita tiedostoja samanaikaisesti välittämällä tiedostojen URL-osoitteet argumentteina suorituksen aikana solmu [skriptin nimi]. Suorittaaksesi tämän tehtävän, sinun on muokattava tiettyjä skriptin osia.
JavaScriptissä argumentit välitettiin rinnalla solmu komento ovat saatavilla process.argv-tiedostossa, joka on globaalin Node.js-objektin ominaisuus. Tämä ominaisuus palauttaa joukon komentoriviargumentteja. Tämän taulukon ensimmäisen elementin tulee olla solmu, todellinen suorittamasi komento. Toinen on komentosarjatiedoston nimi, minkä jälkeen jokaisen seuraavan argumentin tulee olla URL-osoite.
Jos haluat ladata useita tiedostoja kerralla, tallenna joukko osoitteesta process.argv muuttujassa. Suorita sitten slice()-menetelmä poistaaksesi kaksi ensimmäistä elementtiä, jotka eivät ole URL-osoitteita:
konst args = process.argv;
konst urls = args.slice(2);
The viipale() menetelmä luo uuden taulukon taulukon valituista elementeistä. Tämä menetelmä valitsee määritetystä alusta määrättyyn (ei mukaan lukien) loppuun.
Tässä tapauksessa arvon 2 ohittaminen poistaa solmu komennon nimi ja komentosarjatiedoston nimi.
Lopuksi, käyttämällä JavaScriptin karttamenetelmää, ohita jokainen elementti URL-osoitteet joukkoon lataa tiedosto():
urls.map(url =>{
lataustiedosto (url)
});
Suorita koodi syöttämällä solmu komento sekä JavaScript-tiedostosi nimi ja ladattavat URL-osoitteet:
solmu[käsikirjoituksen nimi]url1url2url3
Kolmannen osapuolen kirjaston käyttäminen
Voit myös ladata tiedostoja käyttämällä kolmannen osapuolen kirjastoa, kuten npm ladata paketti.
Asenna komentosarjahakemistossa seuraava npm-komento ladata paketti:
npm Asentaa ladata
Vaadi ladattu paketti skriptissäsi ja tallenna sitten komentorivin argumentit taulukkoon:
konst lataa = vaatia('ladata');
konst args = process.argv;
konst urls = args.slice(2);
Nyt voit käyttää ladata kirjasto tiedostojen lataamiseen. Voit tehdä tämän useilla tavoilla tavoitteestasi riippuen.
Esimerkiksi:
asynktoimintolataa tiedosto(URL-osoitteet){
odottaaLupaus.all (urls.map((url) => lataa (url, "tiedostot")))
};
downloadFile (URL-osoitteet);
Ilmoita lataa tiedosto toimia nimellä asynkja luo a Lupaus odottaa, kunnes tietty tehtävä on valmis odottaa avainsana. Karttaa URL-osoitteet joukkoon ladata funktio ja anna paikallisen kansion nimi -"tiedostot", tässä tapauksessa – tiedostojen tallentamiseen.
Tiedostojen lataaminen paikalliseen tiedostojärjestelmään
Noden sisäänrakennetut toiminnot, kuten fs ja https, tekevät tiedostolatausohjelman kirjoittamisesta helppoa. Helpottaaksesi sitä vieläkin, voit käyttää kolmannen osapuolen moduulia, kuten latausta.
Molemmilla tavoilla voit ladata tiedostoja etäpalvelimelta ja tallentaa ne paikalliseen tiedostojärjestelmään. Sinun tulee valita tarpeisiisi parhaiten sopiva menetelmä ja käyttää sitä seuraavassa Node.js-sovelluksessasi.