Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Stahování souborů do místního úložiště namísto jejich uchovávání v cloudovém úložišti má několik výhod. Patří mezi ně snadnější přístup, přístup bez připojení k internetu a úplné vlastnictví vašich dat.

Pomocí vestavěných modulů Node.js si můžete stáhnout jeden i více souborů. K dosažení stejných výsledků můžete také použít knihovnu třetí strany.

Stahování souborů bez knihovny třetích stran

Chcete-li stáhnout soubor pomocí Node.js bez pomoci balíčků třetích stran, budete potřebovat tři základní moduly Node.js: fs, https, a cesta.

The fs modul podporuje mnoho úloh se soubory včetně čtení, vytváření, aktualizace, odstraňování a přejmenování. The https modul vytváří webový server pro zpracování požadavků a doručování odpovědí. The cesta modul poskytuje způsob interakce s cestami k adresářům a souborům.

Pomocí těchto modulů můžete odeslat požadavek HTTP GET pro přístup k souborovému prostředku z webového serveru a poté vytvořit kopii prostředku ve vašem místním systému.

instagram viewer

Chcete-li začít, importujte požadované moduly:

konst https = vyžadovat('https');
konst fs = vyžadovat('fs');
konst cesta = vyžadovat('cesta');

Budete muset použít název souboru z adresy URL jako dobrý výchozí název pro jeho uložení. Můžete použít modul cesty .basename() metoda k získání názvu souboru z jeho URL. Tato metoda přebírá argument cesty a vrací poslední část cesty.

Například:

konst název_souboru = cesta.základní název (url);

Poté vyžádejte soubor ze serveru vyvoláním https.get() metoda. Tato metoda bere URL jako první argument a funkci zpětného volání pro odpověď jako druhý argument

Předat url proměnná jako první argument a poté funkce zpětného volání pro zpracování, když tato metoda obdrží tok odpovědí:

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

Ve funkci zpětného volání můžete použít fs.createWriteStream() metoda k vytvoření nového zapisovatelného streamu předáním název souboru proměnná jako argument.

Například:

konst fileStream = fs.createWriteStream (název souboru);
res.trubka(fileStream);

The createWriteStream() Metoda usnadňuje proces zápisu dat do souboru, zvláště když pracujete s velkými kusy dat.

The trubka() metoda poté odešle datový tok odpovědi GET do fileStream objekt.

Chcete-li přihlásit zprávu do konzoly poté, co skript dokončil stahování souboru, připojte a .na() emitor události do fileStream proměnná:

fileStream.on('Dokončit', () => {
fileStream.zavřít();
řídicí panel.log('Stahování dokončeno');
});

Objekt fileStream vysílá a Dokončit událost, kdy zapsala všechna data do souboru. Chytit to přes .na() a poskytnout funkci zpětného volání pro uzavření fileStream a přihlásit zprávu do konzole.

Pro lepší provedení a efektivní znovupoužitelnost skriptu, zabalte tento kód do funkce, která jako argument přebírá adresu URL:

funkcestáhnout soubor(url) {
konst název_souboru = cesta.základní název (url);

https.get (url, (res) => {
konst fileStream = fs.createWriteStream (název souboru);
res.trubka(fileStream);

fileStream.on('Dokončit', () => {
fileStream.zavřít();
řídicí panel.log('Stahování dokončeno')
});
})
}

Chcete-li funkci spustit, zavolejte ji a předejte adresu URL souboru, který chcete stáhnout:

stáhnout soubor([url souboru]);

Chcete-li skript spustit, otevřete svůj terminál a zadejte uzel následovaný názvem souboru JavaScript:

uzel[název skriptu]

Tento skript stáhne adresu URL souboru, kterou jste předali stáhnout soubor() a uložte jej do svého pracovního adresáře.

Ošetření chyb při stahování souborů

V Node.js mohou při stahování souborů nastat specifické chyby, jako je zápis do streamu, špatné připojení služby nebo problémy se samotným souborem. Je důležité zaznamenat chybové zprávy, když k těmto chybám dojde, aby bylo možné problém vyřešit.

Try/Catch Block

Blok try-catch je programová struktura, která vám umožňuje zpracovat potenciální chyby a výjimky ve vašem kódu.

Bloky pokus a chytit tvoří blok pokus... chytit. Nejprve se spustí kód bloku try a kód bloku catch se spustí, pokud blok try vyvolá výjimku.

Snaž se {
stáhnout soubor([url souboru]);
} chytit (chyba) {
řídicí panel.log (chyba);
}

Použijte blok try/catch, abyste zajistili, že můžete zachytit jakékoli chyby související se stahováním. Poté můžete podle potřeby zpracovat jakoukoli chybu, jako je přihlášení do konzoly nebo opakování stahování.

Stavový kód odpovědi HTTP

Stavové kódy pro odpovědi HTTP ukazují, zda byl konkrétní požadavek HTTP úspěšně proveden.

Například:

https.get (url, (res) => {
konst kód = res.statusCode();
řídicí panel.log (kód)
konst fileStream = fs.createWriteStream (název souboru);
});

Pokud požadavek vrátí stavový kód mimo rozsah úspěšnosti, 200-299, došlo k problému s požadavkem. Zkontrolujte stavový kód HTTP vyhledejte význam stavového kódu vypořádat se s chybou podle potřeby.

Stahování více souborů

Můžete stáhnout více souborů současně tak, že při spuštění předáte adresy URL souborů jako argumenty uzel [název skriptu]. Chcete-li provést tento úkol, musíte upravit určité části skriptu.

V JavaScriptu se argumenty předávaly vedle uzel jsou dostupné v process.argv, vlastnosti globálního objektu Node.js. Tato vlastnost vrací pole argumentů příkazového řádku. První prvek v tomto poli by měl být uzel, skutečný příkaz, který spustíte. Druhým bude název souboru skriptu, pak každý následující argument by měl být URL.

Chcete-li stáhnout více souborů najednou, uložte pole z proces.argv v proměnné. Poté spusťte metodu slice() k odstranění prvních dvou prvků, které nejsou URL:

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

The plátek() metoda vytvoří nové pole z vybraných prvků v poli. Tato metoda vybírá od zadaného začátku do zadaného (nezahrnujícího) konce.

V tomto případě předání hodnoty 2 odstraní uzel název příkazu a název vašeho skriptu.

Konečně, pomocí mapové metody JavaScriptu, předejte každý prvek v adresy URL pole do stáhnout soubor():

urls.map(url =>{
stáhnout soubor (url)
});

Chcete-li spustit kód, zadejte uzel příkaz spolu s názvem vašeho souboru JavaScript a adresami URL, které chcete stáhnout:

uzel[název skriptu]url1url2url3

Používání knihovny třetí strany

Můžete také stahovat soubory pomocí knihovny třetí strany, jako je npm stažení balík.

V adresáři skriptů spusťte následující příkaz npm a nainstalujte soubor stažení balík:

npm Nainstalujte stažení

Vyžadujte stažený balíček ve skriptu a poté uložte argumenty příkazového řádku do pole:

konst stáhnout = vyžadovat('stažení');
konst args = proces.argv;
konst urls = args.slice(2);

Nyní můžete použít stažení knihovna pro stahování souborů. Můžete to udělat několika způsoby v závislosti na vašem konkrétním cíli.

Například:

asynchronnífunkcestáhnout soubor(adresy URL){
čekatSlib.all (urls.map((url) => stáhnout (url, "soubory")))
};

soubor ke stažení (adresy URL);

Vyhlásit stáhnout soubor fungovat jako asynchronnía vytvořit a Slib počkejte, až bude konkrétní úkol dokončen s čekat klíčové slovo. Zmapovat adresy URL pole k stažení funkci a předat název místní složky –"soubory", v tomto případě – pro uložení souborů.

Stahování souborů do místního systému souborů

Vestavěné funkce Node, jako jsou fs a https, usnadňují psaní programu pro stahování souborů. Aby to bylo ještě jednodušší, můžete použít modul třetí strany, jako je stahování.

Obě metody umožňují stahovat soubory ze vzdáleného serveru a ukládat je do místního systému souborů. Měli byste si vybrat nejlepší metodu pro své potřeby a použít ji ve své další aplikaci Node.js.