پساز بارگذاری فایل در مرجع Cloud Storage، میتوانید فراداده فایل را نیز دریافت و بهروزرسانی کنید، برای مثال نوع محتوا را بهروز کنید. فایلها همچنین میتوانند جفتهای کلید/مقدار سفارشی را با فراداده فایل اضافی ذخیره کنند.
دریافت فراداده فایل
فراداده فایل حاوی داراییهای مشترکی مثل name، size، و
contentType (که اغلب بهعنوان نوع MIME شناخته میشود) است، علاوهبر برخی داراییهای کمتر
مشترک مثل contentDisposition و timeCreated. این فراداده را میتوان بااستفاده از روش metadataWithCompletion: از مرجع Cloud Storage بازیابی کرد.
Swift
// Create reference to the file whose metadata we want to retrieve let forestRef = storageRef.child("images/forest.jpg") // Get metadata properties do { let metadata = try await forestRef.getMetadata() } catch { // ... }
Objective-C
// Create reference to the file whose metadata we want to retrieve FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Get metadata properties [forestRef metadataWithCompletion:^(FIRStorageMetadata *metadata, NSError *error) { if (error != nil) { // Uh-oh, an error occurred! } else { // Metadata now contains the metadata for 'images/forest.jpg' } }];
بهروزرسانی فراداده فایل
میتوانید فراداده فایل را در هر زمانی پساز تکمیل بارگذاری فایل بااستفاده از روش updateMetadata:withCompletion: بهروز کنید. برای اطلاعات بیشتر درباره اینکه کدام داراییها
میتوانند بهروز شوند، به
فهرست کامل مراجعه کنید. فقط داراییهای مشخصشده در فراداده بهروزرسانی میشوند،
همه داراییهای دیگر بدون تغییر باقی میمانند.
Swift
// Create reference to the file whose metadata we want to change let forestRef = storageRef.child("images/forest.jpg") // Create file metadata to update let newMetadata = StorageMetadata() newMetadata.cacheControl = "public,max-age=300" newMetadata.contentType = "image/jpeg" // Update metadata properties do { let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
Objective-C
// Create reference to the file whose metadata we want to change FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Create file metadata to update FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.cacheControl = @"public,max-age=300"; newMetadata.contentType = @"image/jpeg"; // Update metadata properties [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // Updated metadata for 'images/forest.jpg' is returned } }];
میتوانید داراییهای فراداده نوشتنی را با تنظیم آنها روی nil حذف کنید:
Objective-C
FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.contentType = nil; // Delete the metadata property [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // metadata.contentType should be nil } }];
Swift
let newMetadata = StorageMetadata() newMetadata.contentType = nil do { // Delete the metadata property let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
مدیریت خطاها
دلایل متعددی وجود دارد که ممکن است هنگام دریافت یا بهروزرسانی فرادادهها خطا رخ دهد، ازجمله اینکه فایل وجود ندارد یا کاربر اجازه دسترسی به فایل موردنظر را ندارد. اطلاعات بیشتر درباره خطاها را میتوانید در بخش مدیریت خطاها اسناد پیدا کنید.
فراداده سفارشی
میتوانید فراداده سفارشی را بهعنوان NSDictionary حاوی NSString
داراییها مشخص کنید.
Swift
let metadata = [ "customMetadata": [ "location": "Yosemite, CA, USA", "activity": "Hiking" ] ]
Objective-C
NSDictionary *metadata = @{ @"customMetadata": @{ @"location": @"Yosemite, CA, USA", @"activity": @"Hiking" } };
میتوانید دادههای مختص برنامه را برای هر فایل در فراداده سفارشی ذخیره کنید، اما قویاً توصیه میکنیم از پایگاه داده (مثل Firebase Realtime Database) برای ذخیره و همگامسازی این نوع دادهها استفاده کنید.
ویژگیهای فراداده فایل
فهرست کامل ویژگیهای فراداده در یک فایل در زیر دردسترس است:
| دارایی | نوع | قابلنوشتن |
|---|---|---|
bucket |
تار | نه |
generation |
تار | نه |
metageneration |
تار | نه |
fullPath |
تار | نه |
name |
تار | نه |
size |
Int64 | نه |
timeCreated |
تاریخ | نه |
updated |
تاریخ | نه |
md5Hash |
تار | بله |
cacheControl |
تار | بله |
contentDisposition |
تار | بله |
contentEncoding |
تار | بله |
contentLanguage |
تار | بله |
contentType |
تار | بله |
customMetadata |
[رشته: رشته] | بله |
بارگذاری، بارگیری، و بهروزرسانی فایلها مهم است، اما توانایی برداشتن آنها نیز مهم است. بیایید با نحوه حذف فایلها از Cloud Storage آشنا شویم.