หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิง 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* | ไม่ |
generation |
อักขระ Const* | ไม่ |
metageneration |
อักขระ Const* | ไม่ |
full_path |
อักขระ Const* | ไม่ |
name |
อักขระ Const* | ไม่ |
size |
int64_t | ไม่ |
time_created |
int64_t | ไม่ |
updated |
int64_t | ไม่ |
cache_control |
อักขระ Const* | ใช่ |
content_disposition |
อักขระ Const* | ใช่ |
content_encoding |
อักขระ Const* | ใช่ |
content_language |
อักขระ Const* | ใช่ |
content_type |
อักขระ Const* | ใช่ |
download_urls |
std::vector<std::string> | ไม่ |
custom_metadata |
std::map<std::string, std::string> | ใช่ |
ขั้นตอนถัดไป
การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์เป็นสิ่งสำคัญ แต่การที่สามารถ เพื่อนำออก มาดูวิธีการกัน ลบไฟล์ จาก Cloud Storage