Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Pobieranie plików do pamięci lokalnej zamiast przechowywania ich w chmurze ma kilka zalet. Obejmują one łatwiejszy dostęp, dostęp bez połączenia z Internetem i pełną własność danych.

Możesz pobierać pojedyncze i wiele plików za pomocą wbudowanych modułów Node.js. Zamiast tego możesz także użyć biblioteki innej firmy, aby osiągnąć te same wyniki.

Pobieranie plików bez biblioteki innej firmy

Aby pobrać plik za pomocą Node.js, bez pomocy pakietów innych firm, potrzebujesz trzech podstawowych modułów Node.js: fs, https, I ścieżka.

The fs obsługuje wiele zadań związanych z plikami, w tym odczyt, tworzenie, aktualizowanie, usuwanie i zmianę nazwy. The https moduł tworzy serwer WWW do obsługi żądań i dostarczania odpowiedzi. The ścieżka zapewnia sposób interakcji ze ścieżkami do katalogów i plików.

Za pomocą tych modułów można wysłać żądanie HTTP GET w celu uzyskania dostępu do zasobu plikowego z serwera WWW, a następnie wykonać kopię zasobu w systemie lokalnym.

instagram viewer

Aby rozpocząć, zaimportuj wymagane moduły:

konst https = wymagać(„https”);
konst fs = wymagać(„FS”);
konst ścieżka = wymagać('ścieżka');

Będziesz musiał użyć nazwy pliku z adresu URL jako dobrej nazwy domyślnej, aby go zapisać. Możesz użyć modułu ścieżki .nazwa bazowa() metoda uzyskiwania nazwy pliku z jego adresu URL. Ta metoda pobiera argument ścieżki i zwraca ostatnią część ścieżki.

Na przykład:

konst nazwa_pliku = ścieżka.nazwa_bazy (adres URL);

Następnie poproś o plik z serwera, wywołując metodę https.get() metoda. Ta metoda przyjmuje adres URL jako pierwszy argument, a funkcję wywołania zwrotnego dla odpowiedzi jako drugi argument

Przekaż adres URL zmienna jako pierwszy argument, a następnie funkcja wywołania zwrotnego do przetwarzania, gdy ta metoda otrzyma strumień odpowiedzi:

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

W funkcji wywołania zwrotnego możesz użyć fs.createWriteStream() metodę tworzenia nowego strumienia z możliwością zapisu, przekazując metodę Nazwa pliku zmienna jako argument.

Na przykład:

konst fileStream = fs.createWriteStream (nazwa pliku);
rez.rura(plikStrumień);

The utwórzWriteStream() upraszcza proces zapisywania danych do pliku, zwłaszcza gdy operujesz dużymi porcjami danych.

The rura() następnie wysyła strumień danych odpowiedzi GET do plikStrumień obiekt.

Aby zarejestrować komunikat w konsoli po zakończeniu pobierania pliku przez skrypt, dołącz plik .NA() emiter zdarzeń do plikStrumień zmienny:

plikStream.on('skończyć', () => {
plikStrumień.zamknąć();
konsola.dziennik(„Pobieranie zakończone”);
});

Obiekt fileStream emituje a skończyć zdarzenie, gdy zapisał wszystkie dane do pliku. Złap to przez .NA() metodę i udostępnij funkcję wywołania zwrotnego, aby zamknąć plikStrumień i zaloguj wiadomość do konsoli.

Dla lepszego wykonania i wydajna możliwość ponownego użycia skryptu, zawiń ten kod w funkcję, która jako argument przyjmuje adres URL:

funkcjonowaćpobieranie pliku(adres URL) {
konst nazwa_pliku = ścieżka.nazwa_bazy (adres URL);

https.get (url, (res) => {
konst fileStream = fs.createWriteStream (nazwa pliku);
rez.rura(plikStrumień);

plikStream.on('skończyć', () => {
plikStrumień.zamknąć();
konsola.dziennik(„Pobieranie zakończone”)
});
})
}

Aby uruchomić funkcję, wywołaj ją i podaj adres URL pliku, który chcesz pobrać:

pobieranie pliku([URL pliku]);

Aby uruchomić skrypt, otwórz terminal i wprowadź węzeł po którym następuje nazwa pliku JavaScript:

węzeł[nazwa skryptu]

Ten skrypt pobierze adres URL pliku, który przekazałeś do pobieranie pliku() funkcję i zapisz ją w swoim katalogu roboczym.

Obsługa błędów podczas pobierania plików

W Node.js podczas pobierania plików mogą wystąpić określone błędy, takie jak zapisywanie do strumienia, słabe połączenie z usługą lub problemy z samym plikiem. Rejestrowanie komunikatów o błędach w przypadku wystąpienia tych błędów ma kluczowe znaczenie, aby móc rozwiązać problem.

Spróbuj/złap blok

Blok try-catch to struktura programistyczna, która umożliwia obsługę potencjalnych błędów i wyjątków w kodzie.

Bloki try-and-catch składają się na blok try...catch. Kod bloku try jest uruchamiany jako pierwszy, a kod bloku catch jest uruchamiany, jeśli blok try zgłasza wyjątek.

próbować {
pobieranie pliku([URL pliku]);
} złapać (błąd) {
konsola.log (błąd);
}

Użyj bloku try/catch, aby upewnić się, że możesz przechwycić wszelkie błędy związane z pobieraniem. Następnie możesz w razie potrzeby obsłużyć każdy błąd, na przykład zalogować się do konsoli lub ponowić próbę pobrania.

Kod stanu odpowiedzi HTTP

Kody stanu dla odpowiedzi HTTP pokazują, czy dane żądanie HTTP zostało pomyślnie zrealizowane.

Na przykład:

https.get (url, (res) => {
konst kod = res.statusCode();
konsola.log (kod)
konst fileStream = fs.createWriteStream (nazwa pliku);
});

Jeśli żądanie zwróci kod stanu spoza zakresu sukcesu, 200-299, wystąpił problem z żądaniem. Następnie sprawdź kod stanu HTTP sprawdź znaczenie kodu stanu aby poradzić sobie z błędem w razie potrzeby.

Pobieranie wielu plików

Możesz pobrać wiele plików jednocześnie, przekazując adresy URL plików jako argumenty podczas uruchamiania węzeł [nazwa skryptu]. Aby wykonać to zadanie, musisz zmodyfikować niektóre części skryptu.

W JavaScript argumenty przekazywane są razem z węzeł są dostępne w process.argv, właściwości globalnego obiektu Node.js. Ta właściwość zwraca tablicę argumentów wiersza poleceń. Pierwszym elementem w tej tablicy powinno być węzeł, rzeczywiste polecenie, które uruchamiasz. Drugim będzie nazwa pliku skryptu, a następnie każdy kolejny argument powinien być adresem URL.

Aby pobrać wiele plików jednocześnie, zapisz tablicę z proces.argv w zmiennej. Następnie uruchom metodę slice(), aby usunąć pierwsze dwa elementy, które nie są adresami URL:

konst argumenty = proces.argv;
konst adresy URL = argumenty. plasterek (2);

The plasterek() Metoda tworzy nową tablicę z wybranych elementów w tablicy. Ta metoda wybiera od określonego początku do określonego (nieobejmującego) końca.

W takim przypadku przekazanie wartości 2 usuwa węzeł nazwę polecenia i nazwę pliku skryptu.

Wreszcie, przy użyciu metody mapy JavaScript, przekaż każdy element w adresy URL tablica do pobieranie pliku():

adresy URL.map(adres URL =>{
pobierz plik (adres URL)
});

Aby uruchomić kod, wprowadź węzeł polecenie wraz z nazwą pliku JavaScript i adresami URL, które chcesz pobrać:

węzeł[nazwa skryptu]adres URL1adres URL2adres URL3

Korzystanie z biblioteki stron trzecich

Możesz także pobierać pliki przy użyciu biblioteki innej firmy, takiej jak npm pobierać pakiet.

W katalogu skryptów uruchom następujące polecenie npm, aby zainstalować pobierać pakiet:

np zainstalować pobierać

Wymagaj pobranego pakietu w swoim skrypcie, a następnie zapisz argumenty wiersza poleceń w tablicy:

konst pobierz = wymagać('pobierać');
konst argumenty = proces.argv;
konst adresy URL = argumenty. plasterek (2);

Możesz teraz użyć pobierać biblioteka do pobierania plików. Możesz to zrobić na kilka sposobów, w zależności od konkretnego celu.

Na przykład:

asynchronicznyfunkcjonowaćpobieranie pliku(adresy URL){
czekać naObietnica.all (urls.map((adres URL) => pobierz (url, "akta")))
};

pobierz plik (adresy URL);

zadeklarować pobieranie pliku funkcjonować jako asynchronicznyi utwórz a Obietnica czekać, aż określone zadanie zostanie zakończone z czekać na słowo kluczowe. Mapuj adresy URL tablica do pobierać funkcję i przekazać nazwę folderu lokalnego —"akta", w tym przypadku — do przechowywania plików.

Pobieranie plików do lokalnego systemu plików

Wbudowane funkcje Node, takie jak fs i https, ułatwiają napisanie narzędzia do pobierania plików. Aby było to jeszcze łatwiejsze, możesz użyć modułu innej firmy, takiego jak pobieranie.

Obie metody umożliwiają pobieranie plików ze zdalnego serwera i zapisywanie ich w lokalnym systemie plików. Powinieneś wybrać najlepszą metodę dla swoich potrzeb i użyć jej w następnej aplikacji Node.js.