Mit Cloud Storage for Firebase können Sie schnell und einfach Dateien auf ein Bucket Cloud Storage angegeben und wird von Firebase verwaltet.
Referenz erstellen
Um eine Datei hochzuladen, Cloud Storage-Referenz erstellen an den Speicherort in Cloud Storage, in den Sie die Datei hochladen möchten.
Sie können eine Referenz erstellen, indem Sie untergeordnete Pfade an das Stammverzeichnis Ihres Bucket Cloud Storage:
// Create a root reference StorageReference storage_ref = storage->GetReference(); // Create a reference to "mountains.jpg" StorageReference mountains_ref = storage_ref.Child("mountains.jpg"); // Create a reference to 'images/mountains.jpg' StorageReference mountain_images_ref = storage_ref.Child("images/mountains.jpg"); // While the file names are the same, the references point to different files mountains_ref.name() == mountain_images_ref.name(); // true mountains_ref.full_path() == mountain_images_ref.full_path(); // false
Sie können keine Daten mit einem Verweis auf das Stammverzeichnis Ihres Cloud Storage Bucket. Die Referenz muss auf eine untergeordnete URL verweisen.
Dateien hochladen
Sobald du eine Referenz hast, kannst du Dateien zu Cloud Storage hochladen. auf zwei Arten:
- Aus einem Byte-Zwischenspeicher im Arbeitsspeicher hochladen
- Aus einem Dateipfad hochladen, der eine Datei auf dem Gerät darstellt
Aus Daten im Arbeitsspeicher hochladen
Die Methode PutData()
ist die einfachste Möglichkeit, eine Datei in
Cloud Storage. PutData()
verwendet einen Byte-Zwischenspeicher und gibt den Fehlerwert
Future<Metadata>
mit Informationen zur Datei
wenn das Future abgeschlossen ist. Du kannst einen Controller
verwenden, um deinen Upload und
den Status überwachen.
// Data in memory const size_t kByteBufferSize = ... uint8_t byte_buffer[kByteBufferSize] = { ... }; // Create a reference to the file you want to upload StorageReference rivers_ref = storage_ref.Child("images/rivers.jpg"); // Upload the file to the path "images/rivers.jpg" Futurefuture = rivers_ref.PutBytes(byte_buffer, kByteBufferSize);
Zu diesem Zeitpunkt wurde die Anfrage gestellt, aber wir müssen warten, bis das Future bevor die Datei hochgeladen wird. Da Spiele meist in einer Schleife laufen, weniger Callback-gesteuert sind als andere Anwendungen, fragen Sie in der Regel nach Fertigstellung.
if (future.status() != firebase::kFutureStatusPending) { if (future.status() != firebase::kFutureStatusComplete) { LogMessage("ERROR: GetData() returned an invalid future."); // Handle the error... } else if (future.Error() != firebase::storage::kErrorNone) { LogMessage("ERROR: GetData() returned error %d: %s", future.Error(), future.error_message()); // Handle the error... } } else { // Metadata contains file metadata such as size, content-type, and download URL. Metadata* metadata = future.Result(); std::string download_url = metadata->download_url(); } }
Aus einer lokalen Datei hochladen
Sie können lokale Dateien auf den Geräten hochladen, z. B. Fotos und Videos von der
Kamera mit der PutFile()
-Methode. PutFile()
nimmt einen std::string
als Pfad zur Datei an und gibt eine Future<Metadata>
zurück, die Informationen zur Datei enthält, sobald die Future abgeschlossen ist. Sie können einen
Controller
, um deinen Upload zu verwalten und seinen Status zu überwachen.
// File located on disk std::string local_file = ... // Create a reference to the file you want to upload StorageReference rivers_ref = storage_ref.Child("images/rivers.jpg"); // Upload the file to the path "images/rivers.jpg" Futurefuture = rivers_ref.PutFile(localFile); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // Metadata contains file metadata such as size, content-type, and download URL. Metadata* metadata = future.Result(); std::string download_url = metadata->download_url(); }
Wenn Sie Ihren Upload aktiv verwalten möchten, können Sie ein Controller
an das
PutFile()
- oder PutBytes()
-Methode. So können Sie mit dem Controller
den laufenden Uploadvorgang beobachten. Weitere Informationen finden Sie unter Uploads verwalten für
erhalten Sie weitere Informationen.
Dateimetadaten hinzufügen
Sie können auch Metadaten beim Hochladen von Dateien angeben. Diese Metadaten enthalten typische Dateimetadateneigenschaften wie name
, size
und content_type
(allgemein als MIME-Typ bezeichnet). Die Methode PutFile()
leitet automatisch
aus der Dateinamenerweiterung entfernen. Sie können den
automatisch erkannten Typ durch Angabe von content_type
in den Metadaten. Wenn Sie keinen content_type
angeben und Cloud Storage keinen Standard aus der Dateiendung ableiten kann, verwendet Cloud Storage application/octet-stream
. Weitere Informationen finden Sie unter
den Abschnitt Dateimetadaten verwenden
finden Sie weitere Informationen zu Dateimetadaten.
// Create storage reference StorageReference mountains_ref = storage_ref.Child("images/mountains.jpg"); // Create file metadata including the content type StorageMetadata metadata; metadata.set_content_type("image/jpeg"); // Upload data and metadata mountains_ref.PutBytes(data, metadata); // Upload file and metadata mountains_ref.PutFile(local_file, metadata);
Uploads verwalten
Sie können Uploads nicht nur starten, sondern auch mit den folgenden Tools pausieren, fortsetzen und abbrechen:
die Pause()
-, Resume()
- und Cancel()
-Methoden auf Controller
, die Sie
optional an die Methoden PutBytes()
oder PutFile()
übergeben.
// Start uploading a file firebase::storage::Controller controller; storage_ref.Child("images/mountains.jpg").PutFile(local_file, nullptr, &controller); // Pause the upload controller.Pause(); // Resume the upload controller.Resume(); // Cancel the upload controller.Cancel();
Uploadfortschritt im Blick behalten
Sie können Uploads Listener hinzufügen, um den Fortschritt des hochladen.
class MyListener : public firebase::storage::Listener { public: virtual void OnProgress(firebase::storage::Controller* controller) { // A progress event occurred } }; { // Start uploading a file MyEventListener my_listener; storage_ref.Child("images/mountains.jpg").PutFile(local_file, my_listener); }
Fehlerbehandlung
Fehler beim Hochladen können verschiedene Ursachen haben, Die lokale Datei ist nicht vorhanden oder der Nutzer hat keine Berechtigung zum Hochladen. auf die gewünschte Datei. Weitere Informationen zu Fehlern finden Sie im Abschnitt Fehler beheben.
Nächste Schritte
Nachdem Sie Ihre Dateien hochgeladen haben, herunterladen von Cloud Storage.