Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Prenos datotek v lokalno shrambo, namesto da bi jih hranili v shrambi v oblaku, ima več prednosti. Ti vključujejo lažji dostop, dostop brez internetne povezave in popolno lastništvo vaših podatkov.

Z vgrajenimi moduli Node.js lahko prenesete eno ali več datotek. Namesto tega lahko uporabite tudi knjižnico drugega proizvajalca, da dosežete enake rezultate.

Prenos datotek brez knjižnice tretje osebe

Če želite prenesti datoteko z uporabo Node.js, brez pomoči paketov tretjih oseb, boste potrebovali tri osnovne module Node.js: fs, https, in pot.

The fs Modul podpira številne naloge datotek, vključno z branjem, ustvarjanjem, posodabljanjem, odstranjevanjem in preimenovanjem. The https modul ustvari spletni strežnik za obdelavo zahtev in dostavo odgovorov. The pot modul ponuja način za interakcijo z imeniki in potmi datotek.

Z uporabo teh modulov lahko pošljete zahtevo HTTP GET za dostop do datotečnega vira s spletnega strežnika in nato naredite kopijo vira v vašem lokalnem sistemu.

instagram viewer

Za začetek uvozite potrebne module:

konst https = zahtevati('https');
konst fs = zahtevati('fs');
konst pot = zahtevati('pot');

Ime datoteke iz URL-ja boste morali uporabiti kot dobro privzeto ime, da jo shranite. Uporabite lahko module poti .basename() metoda za pridobitev imena datoteke iz njenega URL-ja. Ta metoda sprejme argument poti in vrne zadnji del poti.

Na primer:

konst ime datoteke = path.basename (url);

Nato zahtevajte datoteko od strežnika tako, da pokličete https.get() metoda. Ta metoda vzame URL kot prvi argument in funkcijo povratnega klica za odgovor kot drugi argument

Predaj url spremenljivka kot prvi argument in nato funkcija povratnega klica za obdelavo, ko ta metoda prejme tok odziva:

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

V funkciji povratnega klica lahko uporabite fs.createWriteStream() metoda za ustvarjanje novega zapisljivega toka, ki posreduje Ime datoteke spremenljivka kot argument.

Na primer:

konst fileStream = fs.createWriteStream (ime datoteke);
res.cev(fileStream);

The createWriteStream() olajša postopek zapisovanja podatkov v datoteko, še posebej, če delate z velikimi kosi podatkov.

The cev () metoda nato pošlje podatkovni tok odgovora GET na fileStream predmet.

Če želite sporočilo prijaviti v konzolo, potem ko skript konča s prenosom datoteke, priložite a .on() oddajnik dogodkov v fileStream spremenljivka:

fileStream.on('finish', () => {
fileStream.zapri();
konzola.log('Prenos končan');
});

Objekt fileStream oddaja a končati dogodek, ko je zapisal vse podatke v datoteko. Ujemite to prek .on() in zagotovite funkcijo povratnega klica za zapiranje fileStream in zapišite sporočilo v konzolo.

Za boljšo izvedbo in učinkovita ponovna uporaba skriptaovijte to kodo v funkcijo, ki vzame URL kot argument:

funkcijodownloadFile(url) {
konst ime datoteke = path.basename (url);

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

fileStream.on('finish', () => {
fileStream.zapri();
konzola.log('Prenos končan')
});
})
}

Če želite zagnati funkcijo, jo pokličite in posredujte URL datoteke, ki jo želite prenesti:

downloadFile([URL datoteke]);

Če želite zagnati skript, odprite terminal in vnesite vozlišče ki mu sledi ime datoteke JavaScript:

vozlišče[ime skripta]

Ta skript bo prenesel URL datoteke, ki ste jo posredovali v downloadFile() funkcijo in jo shranite v svoj delovni imenik.

Odpravljanje napak pri prenosu datotek

V Node.js lahko pri prenosu datotek pride do določenih napak, kot je pisanje v tok, slaba povezava storitve ali težave s samo datoteko. Ključnega pomena je, da zabeležite sporočila o napakah, ko pride do teh napak, da se lahko spopadete s težavo.

Poskusi/ulovi blok

Blok try-catch je programska struktura, ki vam omogoča obravnavanje morebitnih napak in izjem v vaši kodi.

Bloki poskusi in ulovi sestavljajo blok poskusi... ulovi. Koda poskusnega bloka se zažene najprej, koda bloka catch pa se zažene, če poskusni blok vrže izjemo.

poskusi {
downloadFile([URL datoteke]);
} ulov (napaka) {
konzola.log (napaka);
}

Uporabite blok poskusi/ulovi, da zagotovite, da lahko ujamete vse napake, povezane s prenosom. Nato lahko po potrebi odpravite morebitno napako, na primer jo prijavite v konzolo ali znova poskusite s prenosom.

Statusna koda odziva HTTP

Statusne kode za odgovore HTTP kažejo, ali je bila določena zahteva HTTP uspešno izvedena.

Na primer:

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

Če zahteva vrne statusno kodo izven obsega uspeha, 200-299, prišlo je do težave z zahtevo. Nato preverite statusno kodo HTTP poiščite pomen statusne kode po potrebi odpraviti napako.

Prenos več datotek

Prenesete lahko več datotek hkrati, tako da med izvajanjem posredujete URL-je datotek kot argumente vozlišče [ime skripta]. Za izvedbo te naloge morate spremeniti določene dele skripta.

V JavaScriptu so se argumenti posredovali skupaj z vozlišče so na voljo v procesu.argv, lastnosti globalnega objekta Node.js. Ta lastnost vrne matriko argumentov ukazne vrstice. Prvi element v tem nizu bi moral biti vozlišče, dejanski ukaz, ki ga izvajate. Drugi bo ime datoteke skripta, nato pa mora biti vsak naslednji argument URL.

Če želite prenesti več datotek hkrati, shranite matriko iz proces.argv v spremenljivki. Nato zaženite metodo slice(), da odstranite prva dva elementa, ki nista URL-ja:

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

The rezina () metoda ustvari novo matriko iz izbranih elementov v matriki. Ta metoda izbira od določenega začetka do določenega (nevključujočega) konca.

V tem primeru posredovanje vrednosti 2 odstrani vozlišče ime ukaza in ime datoteke skripta.

končno, z uporabo metode zemljevida JavaScript, posredujte vsak element v urls niz do downloadFile():

urls.map(url =>{
downloadFile (url)
});

Za zagon kode vnesite vozlišče skupaj z imenom vaše datoteke JavaScript in URL-ji, ki jih želite prenesti:

vozlišče[ime skripta]url1url2url3

Uporaba knjižnice tretje osebe

Datoteke lahko prenesete tudi s knjižnico tretjih oseb, kot je npm Prenesi paket.

Znotraj imenika skriptov zaženite naslednji ukaz npm, da namestite Prenesi paket:

npm namestite Prenesi

Zahtevajte preneseni paket v svojem skriptu, nato shranite argumente ukazne vrstice v matriko:

konst prenos = zahtevati('Prenesi');
konst argumenti = proces.argv;
konst urls = args.slice(2);

Zdaj lahko uporabite Prenesi knjižnico za prenos datotek. To lahko storite na več načinov, odvisno od vašega posebnega cilja.

Na primer:

asinhfunkcijodownloadFile(urls){
čakatiObljuba.all (urls.map((url) => prenos (url, "datoteke")))
};

downloadFile (urli);

Razglasite downloadFile deluje kot asinhin ustvarite a Obljuba počakati, da je določena naloga končana z čakati ključna beseda. Zemljevid urls niz do Prenesi funkcijo in posredujte ime lokalne mape—"datoteke", v tem primeru—za shranjevanje datotek.

Prenos datotek v lokalni datotečni sistem

Vgrajene funkcije Node, kot sta fs in https, olajšajo pisanje prenosnika datotek. Da bi bilo še lažje, lahko uporabite modul tretje osebe, kot je prenos.

Oba načina omogočata prenos datotek z oddaljenega strežnika in njihovo shranjevanje v lokalni datotečni sistem. Izbrati morate najboljšo metodo za svoje potrebe in jo uporabiti v naslednji aplikaciji Node.js.