Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Preuzimanje datoteka u lokalnu pohranu umjesto njihovog držanja u pohrani u oblaku ima nekoliko prednosti. To uključuje lakši pristup, pristup bez internetske veze i potpuno vlasništvo nad vašim podacima.

Možete preuzeti jednu ili više datoteka pomoću ugrađenih modula Node.js. Umjesto toga možete koristiti i biblioteku treće strane kako biste postigli iste rezultate.

Preuzimanje datoteka bez biblioteke treće strane

Za preuzimanje datoteke pomoću Node.js, bez pomoći paketa trećih strana, trebat će vam tri osnovna modula Node.js: fs, https, i staza.

The fs modul podržava mnoge zadatke datoteke uključujući čitanje, stvaranje, ažuriranje, uklanjanje i preimenovanje. The https modul kreira web poslužitelj za obradu zahtjeva i isporuku odgovora. The staza modul pruža način interakcije s imenikom i stazama datoteka.

Pomoću ovih modula možete poslati HTTP GET zahtjev za pristup resursu datoteke s web poslužitelja i zatim napraviti kopiju resursa u vašem lokalnom sustavu.

instagram viewer

Za početak uvezite potrebne module:

konst https = zahtijevati('https');
konst fs = zahtijevati('fs');
konst put = zahtijevati('staza');

Morat ćete upotrijebiti naziv datoteke iz URL-a kao dobro zadano ime da biste je spremili. Možete koristiti module staze .basename() metoda za dobivanje naziva datoteke iz njenog URL-a. Ova metoda uzima argument staze i vraća posljednji dio staze.

Na primjer:

konst naziv datoteke = path.basename (url);

Zatim zatražite datoteku od poslužitelja pozivanjem https.get() metoda. Ova metoda uzima URL kao prvi argument i funkciju povratnog poziva za odgovor kao drugi argument

Dodaj url varijabla kao prvi argument, a zatim funkcija povratnog poziva za obradu kada ova metoda primi tok odgovora:

https.get (url, (res) => {
})

U funkciji povratnog poziva možete koristiti fs.createWriteStream() metoda za stvaranje novog toka za pisanje, prosljeđivanjem naziv datoteke varijabla kao argument.

Na primjer:

konst fileStream = fs.createWriteStream (naziv datoteke);
res.cijev(fileStream);

The createWriteStream() metoda olakšava proces pisanja podataka u datoteku, posebno kada rukujete velikim komadima podataka.

The cijev() metoda zatim šalje tok podataka GET odgovora na fileStream objekt.

Za prijavu poruke na konzolu nakon što skripta završi s preuzimanjem datoteke, priložite a .na() odašiljač događaja na fileStream varijabla:

fileStream.on('Završi', () => {
fileStream.Zatvoriti();
konzola.log('Preuzimanje završeno');
});

FileStream objekt emitira a Završi događaj kada je zapisao sve podatke u datoteku. Uhvatite ovo putem .na() metodu i pružiti funkciju povratnog poziva za zatvaranje fileStream i zapišite poruku na konzolu.

Za bolju izvedbu i učinkovita mogućnost ponovne upotrebe skripte, omotajte ovaj kod u funkciju koja uzima URL kao argument:

funkcijaPreuzmi datoteku(url) {
konst naziv datoteke = path.basename (url);

https.get (url, (res) => {
konst fileStream = fs.createWriteStream (naziv datoteke);
res.cijev(fileStream);

fileStream.on('Završi', () => {
fileStream.Zatvoriti();
konzola.log('Preuzimanje završeno')
});
})
}

Da biste pokrenuli funkciju, pozovite je i proslijedite URL datoteke koju želite preuzeti:

Preuzmi datoteku([url datoteke]);

Za pokretanje skripte otvorite terminal i unesite čvor nakon čega slijedi naziv JavaScript datoteke:

čvor[naziv skripte]

Ova skripta će preuzeti URL datoteke koju ste proslijedili Preuzmi datoteku() funkciju i spremite je u svoj radni imenik.

Rješavanje pogrešaka prilikom preuzimanja datoteka

U Node.js, prilikom preuzimanja datoteka mogu se pojaviti određene pogreške kao što su pisanje u stream, loša servisna veza ili problemi sa samom datotekom. Ključno je zabilježiti poruke o pogreškama kada se te pogreške dogode kako biste mogli riješiti problem.

Pokušajte/uhvatite blok

Blok try-catch je programska struktura koja vam omogućuje rukovanje potencijalnim pogreškama i iznimkama u vašem kodu.

Blokovi pokušaj i uhvati čine blok pokušaj... uhvati. Kod bloka try se izvodi prvi, a kod bloka catch se pokreće ako blok try baci iznimku.

probati {
Preuzmi datoteku([url datoteke]);
} ulov (pogreška) {
konzola.log (greška);
}

Upotrijebite blok try/catch kako biste bili sigurni da možete uhvatiti sve pogreške povezane s preuzimanjem. Zatim možete po potrebi riješiti bilo koju pogrešku, kao što je prijavljivanje na konzolu ili ponovni pokušaj preuzimanja.

Kod statusa HTTP odgovora

Statusni kodovi za HTTP odgovore pokazuju je li određeni HTTP zahtjev uspješno izvršen.

Na primjer:

https.get (url, (res) => {
konst kod = res.statusCode();
konzola.log (kod)
konst fileStream = fs.createWriteStream (naziv datoteke);
});

Ako zahtjev vrati statusni kod izvan raspona uspjeha, 200-299, došlo je do problema sa zahtjevom. Zatim provjerite HTTP statusni kod potražite značenje statusne šifre po potrebi riješiti grešku.

Preuzimanje više datoteka

Možete preuzeti više datoteka istovremeno prosljeđivanjem URL-ova datoteka kao argumenata prilikom pokretanja čvor [naziv skripte]. Da biste izvršili ovaj zadatak, morate modificirati određene dijelove svoje skripte.

U JavaScriptu, argumenti su proslijeđeni uz čvor dostupne su u procesu.argv, svojstvu globalnog objekta Node.js. Ovo svojstvo vraća niz argumenata naredbenog retka. Prvi element u ovom nizu trebao bi biti čvor, stvarna naredba koju pokrećete. Drugi će biti naziv datoteke skripte, a svaki sljedeći argument treba biti URL.

Za preuzimanje više datoteka odjednom, spremite niz iz proces.argv u varijabli. Zatim pokrenite metodu slice() da uklonite prva dva elementa, koji nisu URL-ovi:

konst argumenti = proces.argv;
konst urls = args.slice(2);

The kriška() metoda stvara novi niz od odabranih elemenata u nizu. Ova metoda bira od određenog početka do određenog (neuključivog) kraja.

U ovom slučaju, prosljeđivanje vrijednosti 2 uklanja čvor naziv naredbe i naziv datoteke vaše skripte.

Konačno, pomoću metode mapiranja JavaScripta, proslijedite svaki element u URL-ovi niz do Preuzmi datoteku():

urls.map(url =>{
datoteka za preuzimanje (url)
});

Za pokretanje koda unesite čvor naredba zajedno s nazivom vaše JavaScript datoteke i URL-ovima koje želite preuzeti:

čvor[naziv skripte]url1url2url3

Korištenje biblioteke treće strane

Također možete preuzeti datoteke pomoću biblioteke treće strane kao što je npm preuzimanje datoteka paket.

Unutar direktorija skripti pokrenite sljedeću naredbu npm da biste instalirali preuzimanje datoteka paket:

npm instalirati preuzimanje datoteka

Zatražite preuzeti paket u svojoj skripti, a zatim spremite argumente naredbenog retka u polje:

konst preuzimanje = zahtijevati('preuzimanje datoteka');
konst argumenti = proces.argv;
konst urls = args.slice(2);

Sada možete koristiti preuzimanje datoteka biblioteka za preuzimanje datoteka. To možete učiniti na nekoliko načina, ovisno o vašem konkretnom cilju.

Na primjer:

asinkronifunkcijaPreuzmi datoteku(URL-ovi){
čekatiObećanje.all (urls.map((url) => preuzimanje (url, "datoteke")))
};

preuzimanje datoteke (urlovi);

Izjavite Preuzmi datoteku funkcionirati kao asinkroni, i stvorite a Obećanje čekati dok se određeni zadatak ne završi s čekati ključna riječ. Karta URL-ovi niz na preuzimanje datoteka funkciju i proslijedite naziv lokalne mape—"datoteke", u ovom slučaju—za pohranu datoteka.

Preuzimanje datoteka u lokalni datotečni sustav

Ugrađene funkcije Nodea, poput fs i https, olakšavaju pisanje programa za preuzimanje datoteka. Da biste to učinili još lakšim, možete koristiti modul treće strane kao što je preuzimanje.

Obje metode vam omogućuju preuzimanje datoteka s udaljenog poslužitelja i njihovo spremanje u lokalni datotečni sustav. Trebali biste odabrati najbolju metodu za svoje potrebe i koristiti je u svojoj sljedećoj Node.js aplikaciji.