Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Failų atsisiuntimas į vietinę saugyklą, o ne laikymas debesyje, turi keletą privalumų. Tai apima lengvesnę prieigą, prieigą be interneto ryšio ir visišką jūsų duomenų nuosavybės teisę.

Galite atsisiųsti vieną ir kelis failus naudodami integruotus Node.js modulius. Taip pat galite naudoti trečiosios šalies biblioteką, kad pasiektumėte tuos pačius rezultatus.

Failų atsisiuntimas be trečiosios šalies bibliotekos

Norėdami atsisiųsti failą naudodami Node.js, be trečiųjų šalių paketų pagalbos, jums reikės trijų pagrindinių Node.js modulių: fs, https, ir kelias.

The fs modulis palaiko daugybę failų užduočių, įskaitant skaitymą, kūrimą, atnaujinimą, pašalinimą ir pervardinimą. The https modulis sukuria žiniatinklio serverį užklausoms tvarkyti ir atsakymams pateikti. The kelias modulis suteikia galimybę bendrauti su katalogų ir failų keliais.

Naudodami šiuos modulius galite nusiųsti HTTP GET užklausą, kad pasiektumėte failo išteklius iš žiniatinklio serverio ir tada pasidarykite šaltinio kopiją savo vietinėje sistemoje.

instagram viewer

Norėdami pradėti, importuokite reikiamus modulius:

konst https = reikalauti("https");
konst fs = reikalauti("fs");
konst kelias = reikalauti('kelias');

Norėdami išsaugoti, turėsite naudoti URL failo pavadinimą kaip gerą numatytąjį pavadinimą. Galite naudoti kelio modulį .basename() būdas gauti failo pavadinimą iš jo URL. Šis metodas naudoja kelio argumentą ir grąžina paskutinę kelio dalį.

Pavyzdžiui:

konst failo pavadinimas = kelias.basename (url);

Tada paprašykite failo iš serverio, iškviesdami https.get() metodas. Šis metodas naudoja URL kaip pirmąjį argumentą, o atsakymo atgalinio skambučio funkciją kaip antrą argumentą

Praleiskite url kintamasis kaip pirmasis argumentas, o tada atgalinio skambinimo funkcija, skirta apdoroti, kai šis metodas gauna atsakymo srautą:

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

Atgalinio skambinimo funkcijoje galite naudoti fs.createWriteStream() būdas sukurti naują rašomą srautą, perduodamas failo pavadinimas kintamasis kaip argumentas.

Pavyzdžiui:

konst fileStream = fs.createWriteStream (failo pavadinimas);
res.vamzdis(failų srautas);

The CreateWriteStream() metodas palengvina duomenų įrašymo į failą procesą, ypač kai tvarkote didelius duomenų gabalus.

The vamzdis () Tada metodas siunčia GET atsako duomenų srautą į failų srautas objektas.

Norėdami užregistruoti pranešimą konsolėje, kai scenarijus baigs atsisiųsti failą, pridėkite a .on() įvykių skleidėjas į failų srautas kintamasis:

fileStream.on('baigti', () => {
failų srautas.Uždaryti();
konsolė.log(„Atsisiuntimas baigtas“);
});

FileStream objektas skleidžia a baigti įvykis, kai jis įrašė visus duomenis į failą. Pagauk tai per .on() metodą ir pateikite atgalinio skambinimo funkciją, kad uždarytumėte failų srautas ir įrašykite pranešimą į konsolę.

Siekiant geresnio vykdymo ir efektyvus scenarijaus pakartotinis naudojimas, suvyniokite šį kodą į funkciją, kuri kaip argumentą naudoja URL:

funkcijaAtsisiųsti failą(url) {
konst failo pavadinimas = kelias.basename (url);

https.get (url, (res) => {
konst fileStream = fs.createWriteStream (failo pavadinimas);
res.vamzdis(failų srautas);

fileStream.on('baigti', () => {
failų srautas.Uždaryti();
konsolė.log(„Atsisiuntimas baigtas“)
});
})
}

Norėdami paleisti funkciją, iškvieskite ją ir perduokite failo, kurį norite atsisiųsti, URL:

Atsisiųsti failą([failo url]);

Norėdami paleisti scenarijų, atidarykite terminalą ir įveskite mazgas po kurio nurodomas JavaScript failo pavadinimas:

mazgas[scenarijaus pavadinimas]

Šis scenarijus atsisiųs failo URL, kurį perdavėte Atsisiųsti failą() funkciją ir išsaugokite ją savo darbo kataloge.

Klaidų tvarkymas atsisiunčiant failus

Programoje Node.js atsisiunčiant failus gali atsirasti specifinių klaidų, pvz., rašymas į srautą, prastas paslaugos ryšys arba problemos su pačiu failu. Labai svarbu registruoti klaidų pranešimus, kai šios klaidos įvyksta, kad būtų galima išspręsti problemą.

Išbandykite / pagauk bloką

„Try-catch“ blokas yra programavimo struktūra, leidžianti tvarkyti galimas kodo klaidas ir išimtis.

„Try-and-catch“ blokai sudaro „try...catch“ bloką. Pirmiausia paleidžiamas trynimo bloko kodas, o paleidimo bloko kodas paleidžiamas, jei trynimo blokas pateikia išimtį.

bandyti {
Atsisiųsti failą([failo url]);
} sugauti (klaida) {
konsolė.log (klaida);
}

Naudokite try/catch bloką, kad įsitikintumėte, jog galite užfiksuoti visas su atsisiuntimu susijusias klaidas. Tada galite tvarkyti bet kokią klaidą, jei reikia, pvz., įrašyti ją į konsolę arba bandyti iš naujo atsisiųsti.

HTTP atsako būsenos kodas

HTTP atsakymų būsenos kodai rodo, ar konkreti HTTP užklausa buvo sėkmingai įvykdyta.

Pavyzdžiui:

https.get (url, (res) => {
konst kodas = res.statusCode();
konsolė.log (kodas)
konst fileStream = fs.createWriteStream (failo pavadinimas);
});

Jei užklausoje pateikiamas būsenos kodas, esantis už sėkmingo diapazono ribų, 200-299, kilo problema dėl užklausos. Tada patikrinkite HTTP būsenos kodą suraskite būsenos kodo reikšmę prireikus ištaisyti klaidą.

Kelių failų atsisiuntimas

Galite atsisiųsti kelis failus vienu metu, paleisdami failų URL kaip argumentus mazgas [scenarijaus pavadinimas]. Norėdami atlikti šią užduotį, turite pakeisti tam tikras scenarijaus dalis.

„JavaScript“ argumentai buvo perduoti kartu su mazgas komanda pasiekiama proceso.argv, visuotinio objekto Node.js savybėje. Ši savybė grąžina komandinės eilutės argumentų masyvą. Pirmasis šio masyvo elementas turėtų būti mazgas, tikroji jūsų vykdoma komanda. Antrasis bus scenarijaus failo pavadinimas, tada kiekvienas kitas argumentas turėtų būti URL.

Jei norite atsisiųsti kelis failus vienu metu, išsaugokite masyvą iš procesas.argv kintamajame. Tada paleiskite slice() metodą, kad pašalintumėte pirmuosius du elementus, kurie nėra URL:

konst args = process.argv;
konst urls = args.slice(2);

The gabalas () metodas sukuria naują masyvą iš pasirinktų masyvo elementų. Šis metodas pasirenka nuo nurodytos pradžios iki nurodytos (neįtraukiančios) pabaigos.

Šiuo atveju, perdavus 2 reikšmę, pašalinama mazgas komandos pavadinimą ir scenarijaus failo pavadinimą.

Pagaliau, naudojant JavaScript žemėlapio metodą, praleiskite kiekvieną elementą URL masyvas į Atsisiųsti failą():

urls.map(url =>{
atsisiųsti failą (url)
});

Norėdami paleisti kodą, įveskite mazgas komandą kartu su „JavaScript“ failo pavadinimu ir URL, kuriuos norite atsisiųsti:

mazgas[scenarijaus pavadinimas]url1url2url3

Trečiosios šalies bibliotekos naudojimas

Taip pat galite atsisiųsti failus naudodami trečiosios šalies biblioteką, pvz., npm parsisiųsti paketą.

Savo scenarijaus kataloge paleiskite šią npm komandą, kad įdiegtumėte parsisiųsti paketas:

npm diegti parsisiųsti

Scenarijuje reikalaukite atsisiųsto paketo, tada išsaugokite komandinės eilutės argumentus masyve:

konst parsisiųsti = reikalauti('parsisiųsti');
konst args = process.argv;
konst urls = args.slice(2);

Dabar galite naudoti parsisiųsti biblioteka failams parsisiųsti. Tai galite padaryti keliais būdais, priklausomai nuo konkretaus tikslo.

Pavyzdžiui:

asyncfunkcijaAtsisiųsti failą(URL){
lauktiPažadas.all (urls.map((url) => parsisiųsti (url, "failai")))
};

parsisiųstiFailas (url);

Paskelbti Atsisiųsti failą veikti kaip asyncir sukurti a Pažadas palaukti, kol konkreti užduotis bus baigta laukti raktažodį. Žemėlapį URL masyvas į parsisiųsti funkcija ir perduoti vietinio aplanko pavadinimą -"failus", šiuo atveju – failams saugoti.

Failų atsisiuntimas į vietinę failų sistemą

Node integruotos funkcijos, pvz., fs ir https, palengvina failų atsisiuntimo programos rašymą. Kad būtų dar lengviau, galite naudoti trečiosios šalies modulį, pvz., atsisiuntimą.

Abu metodai leidžia atsisiųsti failus iš nuotolinio serverio ir išsaugoti juos vietinėje failų sistemoje. Turėtumėte pasirinkti geriausią savo poreikius atitinkantį metodą ir naudoti jį kitoje Node.js programoje.