Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A fájlok helyi tárhelyre való letöltése a felhőben való tárolás helyett számos előnnyel jár. Ezek közé tartozik a könnyebb hozzáférés, az internetkapcsolat nélküli hozzáférés és az adatok teljes tulajdonjoga.

A beépített Node.js modulok segítségével egyetlen és több fájlt is letölthet. Ehelyett harmadik féltől származó könyvtárat is használhat ugyanazon eredmények elérése érdekében.

Fájlok letöltése harmadik féltől származó könyvtár nélkül

Egy fájl Node.js használatával, harmadik féltől származó csomagok nélkül történő letöltéséhez három alapvető Node.js modulra lesz szüksége: fs, https, és pálya.

A fs A modul számos fájlfeladatot támogat, beleértve az olvasást, létrehozást, frissítést, eltávolítást és átnevezést. A https modul webszervert hoz létre a kérések kezelésére és a válaszok kézbesítésére. A pálya modul lehetőséget biztosít a könyvtár- és fájlútvonalakkal való interakcióra.

instagram viewer

Ezekkel a modulokkal HTTP GET kérést küldhet egy fájlerőforrás eléréséhez egy webszerverről, majd másolatot készíthet az erőforrásról a helyi rendszerben.

A kezdéshez importálja a szükséges modulokat:

const https = igényelnek("https");
const fs = igényelnek("fs");
const útvonal = igényelnek('pálya');

Az URL-ből származó fájlnevet jó alapértelmezett névként kell használnia a mentéshez. Használhatja az útvonal modult .basename() módszerrel lekérheti a fájl nevét az URL-ből. Ez a metódus útvonal argumentumot vesz fel, és az elérési út utolsó részét adja vissza.

Például:

const fájlnév = elérési út.alapnév (url);

Ezután kérje le a fájlt a szervertől a következő meghívásával https.get() módszer. Ez a metódus az URL-t veszi az első argumentumnak, és a válasz visszahívási függvényét a második argumentumnak

Adja át a url változó az első argumentum, majd egy visszahívási függvény a feldolgozáshoz, amikor ez a metódus válaszfolyamot kap:

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

A visszahívás funkcióban használhatja a fs.createWriteStream() módszer új írható adatfolyam létrehozására, átadva a fájl név változó argumentumként.

Például:

const fileStream = fs.createWriteStream (fájlnév);
res.cső(fileStream);

A createWriteStream() módszer megkönnyíti az adatok fájlba írását, különösen akkor, ha nagy adattömeget kezel.

A cső() metódus elküldi a GET válasz adatfolyamot a fileStream tárgy.

Üzenet naplózásához a konzolra, miután a szkript befejezte a fájl letöltését, csatolja a .tovább() eseménykibocsátó a fileStream változó:

fileStream.on('Befejez', () => {
fileStream.Bezárás();
konzol.log('Letöltés kész');
});

A fileStream objektum a Befejez esemény, amikor az összes adatot a fájlba írta. Fogja meg ezt a .tovább() módszert, és biztosítson egy visszahívási funkciót a bezárásához fileStream és naplózzon egy üzenetet a konzolra.

A jobb kivitelezés érdekében és hatékony szkript-újrafelhasználhatóság, csomagolja be ezt a kódot egy függvénybe, amely az URL-t veszi argumentumként:

funkciófájl letöltése(url) {
const fájlnév = elérési út.alapnév (url);

https.get (url, (res) => {
const fileStream = fs.createWriteStream (fájlnév);
res.cső(fileStream);

fileStream.on('Befejez', () => {
fileStream.Bezárás();
konzol.log('Letöltés kész')
});
})
}

A függvény futtatásához hívja meg, és adja át a letölteni kívánt fájl URL-jét:

fájl letöltése([fájl url]);

A szkript futtatásához nyissa meg a terminált, és írja be csomópont ezt követi a JavaScript fájl neve:

csomópont[szkript neve]

Ez a szkript letölti a fájl URL-jét, amelyet átadott a fájl letöltése() függvényt, és mentse el a munkakönyvtárába.

Hibák kezelése fájlok letöltése közben

A Node.js-ben a fájlok letöltése során konkrét hibák léphetnek fel, például az adatfolyamba írás, rossz szolgáltatáskapcsolat vagy problémák a fájllal. A probléma megoldásához elengedhetetlen a hibaüzenetek naplózása, amikor ezek a hibák előfordulnak.

Próbáld ki/elkapni a blokkot

A try-catch blokk olyan programozási struktúra, amely lehetővé teszi a kód lehetséges hibáinak és kivételeinek kezelését.

A try-and-catch blokkok alkotják a try...catch blokkot. A try blokk kódja fut le először, és a catch blokk kódja fut le, ha a try blokk kivételt dob.

próbáld ki {
fájl letöltése([fájl url]);
} fogás (hiba) {
konzol.log (hiba);
}

Használjon try/catch blokkot annak biztosítására, hogy elkapja a letöltéssel kapcsolatos hibákat. Ezután szükség szerint kezelheti a hibákat, például naplózhatja azt a konzolon vagy újra megpróbálhatja a letöltést.

HTTP válasz állapotkód

A HTTP-válaszok állapotkódjai megmutatják, hogy egy adott HTTP-kérést sikeresen végrehajtottak-e.

Például:

https.get (url, (res) => {
const kód = res.statusCode();
konzol.log (kód)
const fileStream = fs.createWriteStream (fájlnév);
});

Ha a kérés a sikerességi tartományon kívül eső állapotkódot ad vissza, 200-299, probléma lépett fel a kéréssel. Ezután ellenőrizze a HTTP állapotkódot nézze meg az állapotkód jelentését hogy szükség szerint kezelje a hibát.

Több fájl letöltése

Egyszerre több fájlt is letölthet, ha futás közben argumentumként adja át a fájl URL-címét csomópont [szkript neve]. A feladat végrehajtásához módosítania kell a szkript bizonyos részeit.

A JavaScriptben az argumentumok a csomópont parancs elérhető a process.argv fájlban, amely a globális Node.js objektum tulajdonsága. Ez a tulajdonság a parancssori argumentumok tömbjét adja vissza. Ennek a tömbnek az első eleme legyen csomópont, a ténylegesen futtatott parancs. A második a szkriptfájl neve, majd minden következő argumentumnak URL-nek kell lennie.

Ha egyszerre több fájlt szeretne letölteni, mentse a tömböt innen folyamat.argv változóban. Ezután futtassa a slice() metódust az első két elem eltávolításához, amelyek nem URL-ek:

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

A szelet() metódus egy új tömböt hoz létre a tömb kiválasztott elemeiből. Ez a módszer egy meghatározott kezdettől egy meghatározott (nem magában foglaló) végéig választ.

Ebben az esetben a 2-es érték átadása eltávolítja a csomópont parancs nevét és a szkriptfájl nevét.

Végül, JavaScript térképmódszerének használatával, adja át az egyes elemeket a URL-ek array to fájl letöltése():

urls.map(url =>{
letöltésfájl (url)
});

A kód futtatásához írja be a csomópont parancsot a JavaScript-fájl nevével és a letölteni kívánt URL-ekkel együtt:

csomópont[szkript neve]url1url2url3

Harmadik fél könyvtárának használata

A fájlokat harmadik féltől származó könyvtárak, például az npm segítségével is letöltheti Letöltés csomag.

A szkriptkönyvtárban futtassa a következő npm parancsot a telepítéséhez Letöltés csomag:

npm telepítés Letöltés

Kérje meg a letöltött csomagot a szkriptben, majd mentse el a parancssori argumentumokat egy tömbben:

const letöltés = igényelnek('Letöltés');
const args = process.argv;
const urls = args.slice(2);

Most már használhatja a Letöltés könyvtár a fájlok letöltéséhez. Ezt többféleképpen is megteheti az adott céltól függően.

Például:

asyncfunkciófájl letöltése(URL-ek){
várjaÍgéret.all (urls.map((url) => letöltés (url, "fájlok")))
};

downloadFile (url-ek);

Nyilatkozni a fájl letöltése mint async, és hozzon létre a Ígéret várni, amíg az adott feladat befejeződik a várja kulcsszó. Térképezze fel a URL-ek tömb a Letöltés függvényt, és adja át egy helyi mappa nevét –"fájlokat", ebben az esetben – a fájlok tárolására.

Fájlok letöltése a helyi fájlrendszerbe

A Node beépített funkciói, mint például az fs és a https, megkönnyítik a fájlletöltő írását. A még egyszerűbbé tétel érdekében használhat harmadik féltől származó modult, például a letöltést.

Mindkét módszer lehetővé teszi a fájlok letöltését egy távoli kiszolgálóról, és a helyi fájlrendszerbe mentését. Válassza ki az igényeinek leginkább megfelelő módszert, és használja a következő Node.js alkalmazásban.