Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Failu lejupielādei vietējā krātuvē, nevis saglabāšanai mākoņkrātuvē, ir vairākas priekšrocības. Tie ietver vieglāku piekļuvi, piekļuvi bez interneta savienojuma un pilnīgas īpašumtiesības uz jūsu datiem.

Varat lejupielādēt vienu un vairākus failus, izmantojot iebūvētos Node.js moduļus. Tā vietā varat izmantot arī trešās puses bibliotēku, lai sasniegtu tādus pašus rezultātus.

Failu lejupielāde bez trešās puses bibliotēkas

Lai lejupielādētu failu, izmantojot Node.js, bez trešo pušu pakotņu palīdzības, jums būs nepieciešami trīs galvenie Node.js moduļi: fs, https, un ceļš.

The fs modulis atbalsta daudzus failu uzdevumus, tostarp lasīšanu, izveidi, atjaunināšanu, noņemšanu un pārdēvēšanu. The https modulis izveido tīmekļa serveri, lai apstrādātu pieprasījumus un piegādātu atbildes. The ceļš modulis nodrošina veidu, kā mijiedarboties ar direktoriju un failu ceļiem.

instagram viewer

Izmantojot šos moduļus, varat nosūtīt HTTP GET pieprasījumu, lai piekļūtu faila resursam no tīmekļa servera, un pēc tam izveidot resursa kopiju savā lokālajā sistēmā.

Lai sāktu, importējiet nepieciešamos moduļus:

konst https = pieprasīt('https');
konst fs = pieprasīt("fs");
konst ceļš = pieprasīt('ceļš');

Lai to saglabātu, jums būs jāizmanto URL faila nosaukums kā labs noklusējuma nosaukums. Varat izmantot ceļa moduli .basename() metode, lai iegūtu faila nosaukumu no tā URL. Šī metode izmanto ceļa argumentu un atgriež pēdējo ceļa daļu.

Piemēram:

konst faila nosaukums = ceļš.bāzes nosaukums (url);

Pēc tam pieprasiet failu no servera, izsaucot https.get() metodi. Šī metode izmanto URL kā pirmo argumentu un atbildes atzvanīšanas funkciju kā otro argumentu

Paiet garām url mainīgais kā pirmais arguments un pēc tam atzvanīšanas funkcija apstrādei, kad šī metode saņem atbildes straumi:

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

Atzvanīšanas funkcijā varat izmantot fs.createWriteStream() metode, lai izveidotu jaunu rakstāmu straumi, nokārtojot faila nosaukums mainīgais kā arguments.

Piemēram:

konst fileStream = fs.createWriteStream (faila nosaukums);
res.caurule(failu straume);

The izveidotWriteStream() metode atvieglo datu ierakstīšanas procesu failā, īpaši, ja apstrādājat lielus datu gabalus.

The caurule () metode pēc tam nosūta GET atbildes datu straumi uz failu straume objektu.

Lai reģistrētu ziņojumu konsolē pēc tam, kad skripts ir pabeidzis faila lejupielādi, pievienojiet a .on() notikumu izstarotājs uz failu straume mainīgais:

fileStream.on('pabeigt', () => {
failu straume.aizvērt();
konsole.log('Lejupielāde pabeigta');
});

FileStream objekts izstaro a pabeigt notikumu, kad tas ir ierakstījis visus datus failā. Uztveriet to, izmantojot .on() metodi un nodrošina atzvanīšanas funkciju, lai aizvērtu failu straume un reģistrējiet ziņojumu konsolē.

Labākai izpildei un efektīva skripta atkārtota izmantošana, iesaiņojiet šo kodu funkcijā, kas kā argumentu izmanto URL:

funkcijulejupielādēt failu(url) {
konst faila nosaukums = ceļš.bāzes nosaukums (url);

https.get (url, (res) => {
konst fileStream = fs.createWriteStream (faila nosaukums);
res.caurule(failu straume);

fileStream.on('pabeigt', () => {
failu straume.aizvērt();
konsole.log('Lejupielāde pabeigta')
});
})
}

Lai palaistu funkciju, izsauciet to un nosūtiet lejupielādējamā faila URL:

lejupielādēt failu([faila URL]);

Lai palaistu skriptu, atveriet savu termināli un ievadiet mezgls kam seko JavaScript faila nosaukums:

mezgls[skripta nosaukums]

Šis skripts lejupielādēs faila URL, kuru nosūtījāt downloadFile() funkciju un saglabājiet to savā darba direktorijā.

Kļūdu apstrāde, lejupielādējot failus

Programmā Node.js, lejupielādējot failus, var rasties īpašas kļūdas, piemēram, rakstīšana straumē, slikts pakalpojuma savienojums vai problēmas ar pašu failu. Ir ļoti svarīgi reģistrēt kļūdu ziņojumus, kad šīs kļūdas rodas, lai varētu risināt problēmu.

Izmēģiniet/noķer bloķēšanu

Try-catch bloks ir programmēšanas struktūra, kas ļauj apstrādāt iespējamās kļūdas un izņēmumus savā kodā.

Mēģiniet un noķert bloki veido try...catch bloku. Vispirms tiek izpildīts mēģinājuma bloka kods, un noķeršanas bloka kods tiek palaists, ja try bloks rada izņēmumu.

mēģināt {
lejupielādēt failu([faila URL]);
} noķert (kļūda) {
konsole.log (kļūda);
}

Izmantojiet try/catch bloku, lai nodrošinātu, ka varat uztvert visas ar lejupielādi saistītas kļūdas. Pēc tam varat rīkoties ar jebkuru kļūdu, ja nepieciešams, piemēram, reģistrēt to konsolē vai atkārtoti mēģināt lejupielādēt.

HTTP atbildes statusa kods

HTTP atbilžu statusa kodi parāda, vai konkrēts HTTP pieprasījums ir veiksmīgi izpildīts.

Piemēram:

https.get (url, (res) => {
konst kods = res.statusCode();
konsole.log (kods)
konst fileStream = fs.createWriteStream (faila nosaukums);
});

Ja pieprasījums atgriež statusa kodu ārpus veiksmes diapazona, 200-299, radās problēma ar pieprasījumu. Pēc tam pārbaudiet HTTP statusa kodu meklējiet statusa koda nozīmi lai pēc vajadzības novērstu kļūdu.

Vairāku failu lejupielāde

Varat lejupielādēt vairākus failus vienlaikus, nosūtot failu vietrāžus URL kā argumentus palaišanas laikā mezgls [skripta nosaukums]. Lai veiktu šo uzdevumu, jums ir jāmaina noteiktas skripta daļas.

Programmā JavaScript argumenti tika nodoti kopā ar mezgls komandas ir pieejamas process.argv, globālā objekta Node.js rekvizīts. Šis rekvizīts atgriež komandrindas argumentu masīvu. Pirmajam elementam šajā masīvā jābūt mezgls, faktiskā komanda, kuru izpildāt. Otrais būs skripta faila nosaukums, pēc tam katram nākamajam argumentam ir jābūt vietrādim URL.

Lai lejupielādētu vairākus failus vienlaikus, saglabājiet masīvu no process.argv mainīgajā. Pēc tam palaidiet metodi slice(), lai noņemtu pirmos divus elementus, kas nav vietrāži URL:

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

The šķēle () metode izveido jaunu masīvu no atlasītajiem elementiem masīvā. Šī metode atlasa no noteikta sākuma līdz noteiktam (neieskaitot) beigām.

Šajā gadījumā, nododot vērtību 2, tiek noņemts mezgls komandas nosaukums un jūsu skripta faila nosaukums.

Visbeidzot, izmantojot JavaScript kartes metodi, nododiet katru elementu URL masīvs uz downloadFile():

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

Lai palaistu kodu, ievadiet mezgls komandu kopā ar JavaScript faila nosaukumu un URL, ko vēlaties lejupielādēt:

mezgls[skripta nosaukums]url1url2url3

Trešās puses bibliotēkas izmantošana

Varat arī lejupielādēt failus, izmantojot trešās puses bibliotēku, piemēram, npm lejupielādēt iepakojums.

Skripta direktorijā palaidiet šo npm komandu, lai instalētu lejupielādēt iepakojums:

npm uzstādīt lejupielādēt

Pieprasiet skriptā lejupielādēto pakotni, pēc tam saglabājiet komandrindas argumentus masīvā:

konst lejupielādēt = pieprasīt('lejupielādēt');
konst args = process.argv;
konst urls = args.slice(2);

Tagad varat izmantot lejupielādēt bibliotēka, lai lejupielādētu failus. To var izdarīt vairākos veidos atkarībā no jūsu konkrētā mērķa.

Piemēram:

asinhronāfunkcijulejupielādēt failu(URL){
gaidītApsolīt.all (urls.map((url) => lejupielādēt (url, "faili")))
};

downloadFile (urls);

Pasludināt lejupielādēt failu funkcionēt kā asinhronāun izveidojiet a Apsolīt gaidīt, līdz konkrētais uzdevums ir pabeigts ar gaidīt atslēgvārds. Kartē URL masīvs uz lejupielādēt funkciju un nododiet vietējās mapes nosaukumu -"failus", šajā gadījumā — lai saglabātu failus.

Failu lejupielāde vietējā failu sistēmā

Node iebūvētās funkcijas, piemēram, fs un https, atvieglo failu lejupielādētāja rakstīšanu. Lai to padarītu vēl vienkāršāku, varat izmantot trešās puses moduli, piemēram, lejupielādi.

Abas metodes ļauj lejupielādēt failus no attālā servera un saglabāt tos vietējā failu sistēmā. Jums vajadzētu izvēlēties savām vajadzībām piemērotāko metodi un izmantot to nākamajā Node.js lietojumprogrammā.