Pamięć Firebase zapewnia prosty sposób przechowywania danych generowanych przez użytkowników, takich jak obrazy, filmy i pliki audio. Integruje się z uwierzytelnianiem Firebase, dzięki czemu możesz kontrolować, kto ma dostęp do plików.
Za pomocą Firebase możesz przechowywać duże ilości treści, ponieważ jest ona automatycznie skalowana do Twoich potrzeb. Jest prosty w użyciu z zewnętrznym frameworkiem, takim jak biblioteka React JavaScript
Konfiguracja projektu
Aby przesłać pliki do Pamięć Firebase, musisz utworzyć formularz internetowy, który pozwoli użytkownikom wybrać plik z systemu plików.
Zacząć od tworzenie aplikacji React za pomocą aplikacji create-react. Uruchom to polecenie, aby wygenerować projekt React o nazwie przesyłanie-firebase:
npx Stwórz-react-app firebase-upload
Aby było to proste, potrzebujesz tylko przycisku wprowadzania, który akceptuje pliki i przycisku przesyłania. Zastąp zawartość App.js z następującym kodem.
import {stan użycia} od "reagować"
funkcjonowaćAplikacja() {
const [plik, setFile] = useState("");// Obsługuje dane wejściowe zmianawydarzenieoraz stan aktualizacji
funkcjonowaćuchwytZmień(wydarzenie) {
setFile(wydarzenie.cel.akta[0]);
}zwrócić (
<div>
<typ wejścia="plik" akceptuj="obraz/*" onChange={handleChange}/>
<przycisk>Prześlij do Firebase</button>
</div>
);
}
eksportdomyślna Aplikacja;
W powyższym kodzie, Wejście tagi zaakceptować atrybut jest ustawiony na zezwalanie tylko na obrazy. ten handleChange() funkcja obsługuje zmianę danych wejściowych i aktualizuje stan w celu przechowywania wybranego pliku.
Skonfiguruj Firebase
Przed przesłaniem pliku do pamięci Firebase musisz utworzyć projekt Firebase.
Utwórz projekt Firebase
Postępuj zgodnie z poniższymi instrukcjami, aby utworzyć projekt Firebase:
- Przejdź do Firebase stronę konsoli i kliknij Dodaj projekt lub Utwórz projekt (jeśli tworzysz projekt po raz pierwszy).
- Nadaj swojemu projektowi wybraną nazwę i kliknij Kontyntynuj.
- Usuń zaznaczenie Google Analytics, ponieważ nie jest ono potrzebne w tym projekcie, i kliknij Utwórz projekt.
- Kliknij Kontyntynuj gdy projekt jest gotowy.
- Kliknij na ikona sieci na stronie przeglądu projektu, aby zarejestrować aplikację internetową.
- Nadaj swojej aplikacji pseudonim i kliknij Zarejestrować.
- Skopiuj dostarczony obiekt konfiguracyjny. Będzie on potrzebny do połączenia aplikacji z Firebase.
Utwórz zasobnik Cloud Storage
Firebase przechowuje pliki w zasobniku pamięci w chmurze. Wykonaj następujące kroki, aby go utworzyć:
- Na stronie przeglądu projektu kliknij Składowanie zakładka w lewym panelu nawigacyjnym.
- Kliknij Zaczynaj i wybierz Tryb testowy.
- Wybierz domyślną lokalizację zasobnika pamięci i kliknij Zrobione.
Możesz teraz rozpocząć przesyłanie plików do pamięci Firebase.
Dodaj Firebase do React
W swoim terminalu przejdź do folderu projektu React. Uruchom następujące polecenie, aby zainstalować pakiet Firebase SDK:
npm zainstalować baza ogniowa
Utwórz nowy plik, firebaseConfig.jsi zainicjuj Firebase.
import { zainicjuj aplikację } od „firebase/aplikacja”;
import { pobierzStorage } od „firebase/magazyn”;// Zainicjuj Firebase
stały aplikacja = zainicjujaplikację ({
Klucz API: <Klucz API>,
authDomain: <authDomain>,
identyfikator projektu: <identyfikator projektu>,
Wiaderko do przechowywania: <Wiadro do przechowywania>,
MessageSenderId: <MessageSenderId>,
identyfikator aplikacji: <identyfikatoraplikacji>,
identyfikator pomiaru: <identyfikator pomiaru>,
});
// Dokumentacja pamięci Firebase
stały przechowywanie = getStorage (aplikacja);
eksportdomyślna składowanie;
Użyj obiektu konfiguracji otrzymanego po utworzeniu projektu Firebase, aby zainicjować aplikację Firebase.
Ostatni wiersz eksportuje odniesienie do pamięci Firebase, dzięki czemu możesz uzyskać dostęp do tego wystąpienia z reszty aplikacji.
Utwórz funkcję obsługi, aby przesłać obrazy do Firebase
Kliknięcie przycisku przesyłania powinno uruchomić funkcję odpowiedzialną za przesłanie pliku do pamięci Firebase. Stwórzmy tę funkcję.
W App.js, dodaj funkcję uchwytPrześlij. W funkcji sprawdź, czy plik nie jest pusty, ponieważ użytkownik może kliknąć przycisk przesyłania przed wybraniem pliku. Jeśli plik nie istnieje, zgłoś alert, który każe użytkownikowi najpierw przesłać plik.
funkcjonowaćuchwytPrześlij() {
jeśli (!plik) {
alarm("Proszę najpierw wybrać plik!")
}
}
Jeśli plik istnieje, utwórz odwołanie do przechowywania. Odwołanie do pamięci działa jako wskaźnik do pliku w chmurze, na którym chcesz operować.
Zacznij od zaimportowania usługi przechowywania utworzonej w firebaseConfig.js plik.
import składowanie od „./firebaseConfig.js”
Import ref z instancji magazynu Firebase i jako argument przekaż usługę magazynu i ścieżkę pliku.
import {ref} od „baza ogniowa/pamięć”
funkcjonowaćuchwytPrześlij() {
jeśli (!plik) {
alarm("Proszę najpierw wybrać plik!")
}
stały storageRef = ref (przechowywanie, `/pliki/${nazwa.pliku}`)
}
Następnie utwórz zadanie przesyłania, przekazując instancję pamięci Firebase do uploadBytesResumable() funkcjonować. Istnieje kilka metod, z których możesz skorzystać, ale ta konkretna umożliwia wstrzymanie i wznowienie przesyłania. Udostępnia również aktualizacje postępu.
ten uploadBytesResumable() funkcja akceptuje referencję do przechowywania i plik do przesłania.
import {
ref,
uploadBytesResumable
} od „firebase/magazyn”;funkcjonowaćuchwytPrześlij() {
jeśli (!plik) {
alert("Najpierw wybierz plik!")
}
stały storageRef = ref (przechowywanie, `/pliki/${nazwa.pliku}`)
stały uploadTask = uploadBytesResumable (storageRef, plik);
}
Aby monitorować postęp i obsługiwać błędy podczas przesyłania plików, nasłuchuj zmian stanu, błędów i zakończenia.
import {
ref,
uploadBytesResumable,
getDownloadURL
} od "Firebase/magazyn";funkcjonowaćuchwytPrześlij() {
jeśli (!plik) {
alarm("Proszę najpierw wybrać plik!")
}stały storageRef = ref (przechowywanie,`/pliki/${nazwa.pliku}`)
stały uploadTask = uploadBytesResumable (storageRef, plik);prześlij zadanie.na(
"stan_zmieniony",
(migawka) => {
stały procent = Matematyka.okrągły(
(migawka.bytesTransferred / snapshot.totalBytes) * 100
);
// postęp aktualizacji
setPercent (procent);
},
(błąd) => konsola.log (błąd),
() => {
// pobierz adres URL
getDownloadURL(uploadTask.snapshot.ref).then((url) => {
konsola.log (adres URL);
});
}
);
}
Tutaj stan_zmieniony zdarzenie ma trzy funkcje zwrotne. W pierwszej funkcji śledzisz postęp przesyłania i przesyłanie stanu postępu. W drugiej funkcji zwrotnej obsłuż błąd, jeśli przesyłanie nie powiedzie się.
Ostatnia funkcja uruchamia się po zakończeniu przesyłania i pobiera adres URL pobierania, a następnie wyświetla go w konsoli. W rzeczywistej aplikacji możesz zapisać go w bazie danych.
Możesz wyświetlić stan postępu przesyłania, używając stanu procentowego. Dodaj również na kliknięcie zdarzenie na przycisku przesyłania, aby wywołać uchwytPrześlij funkcjonować.
import { stan użycia } od "reagować";
funkcjonowaćAplikacja() {
stały [procent, setPercent] = useState(0);
zwrócić (
<div>
<typ wejścia="plik" onChange={handleChange} zaakceptować="" />
<button onClick={handleUpload}>Prześlij do Firebase</button>
<p>{procent} "% zrobione"</p>
</div>
)
}
Oto kompletny kod dla App.js:
import { stan użycia } od "reagować";
import { składowanie } od "./firebaseConfig";
import { ref, uploadBytesResumable, getDownloadURL } od „firebase/magazyn”;funkcjonowaćAplikacja() {
// Stan do przechowywania przesłanego pliku
const [plik, setFile] = useState("");// postęp
stały [procent, setPercent] = useState(0);// Obsługa zdarzenia przesyłania pliku i stanu aktualizacji
funkcjonowaćuchwytZmień(wydarzenie) {
setFile(wydarzenie.cel.akta[0]);
}stały handleUpload = () => {
jeśli (!plik) {
alarm("Najpierw prześlij obraz!");
}stały storageRef = ref (przechowywanie, `/pliki/${nazwa.pliku}`);
// postęp można wstrzymywać i wznawiać. Udostępnia również aktualizacje postępu.
// Odbiera odwołanie do pamięci i plik do przesłania.
stały uploadTask = uploadBytesResumable (storageRef, plik);prześlij zadanie.na(
"stan_zmieniony",
(migawka) => {
stały procent = Matematyka.okrągły(
(migawka.bytesTransferred / snapshot.totalBytes) * 100
);// postęp aktualizacji
setPercent (procent);
},
(błąd) => konsola.log (błąd),
() => {
// pobierz adres URL
getDownloadURL(uploadTask.snapshot.ref).then((url) => {
konsola.log (adres URL);
});
}
);
};zwrócić (
<div>
<typ wejścia="plik" onChange={handleChange} zaakceptować="/image/*" />
<button onClick={handleUpload}>Prześlij do Firebase</button>
<p>{procent} "% zrobione"</p>
</div>
);
}
eksportdomyślna Aplikacja;
Więcej możliwości dzięki pamięci Firebase
Przesyłanie plików to jedna z najbardziej podstawowych funkcji pamięci Firebase. Pamięć Firebase pozwala jednak na inne rzeczy. Możesz uzyskać dostęp, wyświetlać, organizować i usuwać swoje pliki.
W bardziej skomplikowanej aplikacji możesz chcieć uwierzytelnić użytkowników, aby nadać im uprawnienia do interakcji tylko z ich plikami.
Uwierzytelnianie użytkowników za pomocą Firebase i React
Czytaj dalej
Powiązane tematy
- Programowanie
- Reagować
- Baza danych
- Tworzenie stron internetowych
O autorze

Mary Gathoni jest programistą z pasją do tworzenia treści technicznych, które mają nie tylko charakter informacyjny, ale także angażują. Kiedy nie koduje ani nie pisze, lubi spędzać czas z przyjaciółmi i przebywać na świeżym powietrzu.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować