אחרי העלאת קובץ להפניה Cloud Storage, אפשר גם לקבל ולעדכן את המטא-נתונים של הקובץ, למשל כדי לעדכן את סוג התוכן. בקובצים אפשר גם לאחסן צמדי מפתח/ערך בהתאמה אישית עם מטא-נתונים נוספים של הקובץ.
אחזור מטא-נתונים של קובץ
המטא-נתונים של הקובץ מכילים מאפיינים נפוצים כמו name
, size
ו-content_type
(שנקראים לרוב סוג MIME), וגם מאפיינים פחות נפוצים כמו content_disposition
ו-time_created
. אפשר לאחזר את המטא-נתונים האלה מהפנייה Cloud Storage באמצעות השיטה GetMetadata
.
// Create reference to the file whose metadata we want to retrieve StorageReference forest_ref = storage_ref.Child("images/forest.jpg"); // Get metadata properties Futurefuture = forest_ref.GetMetadata(); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // We can now retrieve the metadata for 'images/forest.jpg' Metadata* metadata = future.Result(); }
עדכון המטא-נתונים של הקובץ
אפשר לעדכן את המטא-נתונים של הקובץ בכל שלב אחרי שההעלאה שלו מסתיימת, באמצעות השיטה UpdateMetadata
. ברשימה המלאה מפורט מידע נוסף על המאפיינים שאפשר לעדכן. רק המאפיינים שצוינו במטא-נתונים מתעדכנים, והשאר לא משתנים.
// Create reference to the file whose metadata we want to change firebase::storage::StorageReference forest_ref = storage_ref.child("images/forest.jpg"); // Create file metadata to update Metadata new_metadata; newMetadata.set_cache_control("public,max-age=300"); newMetadata.set_content_type("image/jpeg"); // Update metadata properties Futurefuture = forest_ref.UpdateMetadata(new_metadata); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // We can now retrieve the updated metadata for 'images/forest.jpg' Metadata* metadata = future.Result(); }
כדי למחוק נכסי מטא-נתונים שניתנים לכתיבה, מעבירים את המחרוזת הריקה:
// Create file metadata with property to delete StorageMetadata new_metadata; new_metadata.set_content_type(""); // Delete the metadata property Futurefuture = forest_ref.UpdateMetadata(new_metadata); // Wait for Future to complete... if (future.Error() != 0) { // Uh-oh, an error occurred! } else { // metadata.content_type() should be an empty string Metadata* metadata = future.Result(); }
טיפול בשגיאות
יש כמה סיבות לכך שעשויות להתרחש שגיאות בקבלה או בעדכון של מטא-נתונים, כולל העובדה שהקובץ לא קיים או שהמשתמש לא קיבל הרשאה לגשת לקובץ הרצוי. מידע נוסף על שגיאות זמין בקטע טיפול בשגיאות במסמכים.
מטא-נתונים בהתאמה אישית
אפשר לציין מטא-נתונים בהתאמה אישית בתור std::map
שמכיל מאפייני std::string
.
std::map<std::string, std::string>* custom_metadata = metadata.custom_metadata(); custom_metadata->insert(std::make_pair("location", "Yosemite, CA, USA"); custom_metadata->insert(std::make_pair("activity", "Hiking");
אפשר לאחסן נתונים ספציפיים לאפליקציה לכל קובץ במטא-נתונים מותאמים אישית, אבל מומלץ מאוד להשתמש במסד נתונים (כמו Firebase Realtime Database) כדי לאחסן ולסנכרן את סוג הנתונים הזה.
מאפייני המטא-נתונים של הקובץ
בהמשך מופיעה רשימה מלאה של מאפייני המטא-נתונים בקובץ:
נכס | סוג | לכתיבה |
---|---|---|
bucket |
const char* | לא |
generation |
const char* | לא |
metageneration |
const char* | לא |
full_path |
const char* | לא |
name |
const char* | לא |
size |
int64_t | לא |
time_created |
int64_t | לא |
updated |
int64_t | לא |
cache_control |
const char* | כן |
content_disposition |
const char* | כן |
content_encoding |
const char* | כן |
content_language |
const char* | כן |
content_type |
const char* | כן |
download_urls |
std::vector<std::string> | לא |
custom_metadata |
std::map<std::string, std::string> | כן |
השלבים הבאים
חשוב להעלות, להוריד ולעדכן קבצים, אבל חשוב גם שתוכלו להסיר אותם. עכשיו נלמד איך למחוק קבצים מ-Cloud Storage.