از ابرداده فایل با Cloud Storage در پلتفرم های اپل استفاده کنید

پس از آپلود فایل در مرجع Cloud Storage ، می‌توانید فراداده‌های فایل را نیز دریافت و به‌روزرسانی کنید، برای مثال، نوع محتوا را به‌روزرسانی کنید. فایل‌ها همچنین می‌توانند جفت‌های کلید/مقدار سفارشی را با فراداده‌های فایل اضافی ذخیره کنند.

دریافت متادیتای فایل

فراداده‌های فایل شامل ویژگی‌های رایجی مانند name ، size و contentType (که اغلب به عنوان نوع MIME شناخته می‌شوند) علاوه بر برخی ویژگی‌های کمتر رایج مانند contentDisposition و timeCreated هستند. این فراداده‌ها را می‌توان با استفاده از متد metadataWithCompletion: از یک مرجع Cloud Storage بازیابی کرد.

سویفت

// 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 {
  // ...
}
    

هدف-سی

// 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: به‌روزرسانی کنید. برای اطلاعات بیشتر در مورد ویژگی‌هایی که می‌توانند به‌روزرسانی شوند، به لیست کامل مراجعه کنید. فقط ویژگی‌های مشخص شده در فراداده به‌روزرسانی می‌شوند، سایر موارد بدون تغییر باقی می‌مانند.

سویفت

// 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 {
  // ...
}
    

هدف-سی

// 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 حذف کنید:

هدف-سی

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
  }
}];

سویفت

let newMetadata = StorageMetadata()
newMetadata.contentType = nil

do {
  // Delete the metadata property
  let updatedMetadata = try await forestRef.updateMetadata(newMetadata)
} catch {
  // ...
}

مدیریت خطاها

دلایل مختلفی وجود دارد که ممکن است هنگام دریافت یا به‌روزرسانی متادیتا، خطا رخ دهد، از جمله وجود نداشتن فایل یا نداشتن مجوز دسترسی کاربر به فایل مورد نظر. اطلاعات بیشتر در مورد خطاها را می‌توانید در بخش «مدیریت خطاها» در مستندات بیابید.

فراداده سفارشی

شما می‌توانید متادیتای سفارشی را به عنوان یک NSDictionary حاوی ویژگی‌های NSString مشخص کنید.

سویفت

let metadata = [
  "customMetadata": [
    "location": "Yosemite, CA, USA",
    "activity": "Hiking"
  ]
]
    

هدف-سی

NSDictionary *metadata = @{
  @"customMetadata": @{
    @"location": @"Yosemite, CA, USA",
    @"activity": @"Hiking"
  }
};

شما می‌توانید داده‌های مختص برنامه را برای هر فایل در متادیتای سفارشی ذخیره کنید، اما ما اکیداً توصیه می‌کنیم از یک پایگاه داده (مانند Firebase Realtime Database ) برای ذخیره و همگام‌سازی این نوع داده‌ها استفاده کنید.

ویژگی‌های فراداده فایل

لیست کاملی از ویژگی‌های فراداده در یک فایل در زیر موجود است:

ملک نوع قابل نوشتن
bucket رشته خیر
generation رشته خیر
metageneration رشته خیر
fullPath رشته خیر
name رشته خیر
size بین‌رشته‌ای64 خیر
timeCreated تاریخ خیر
updated تاریخ خیر
md5Hash رشته بله
cacheControl رشته بله
contentDisposition رشته بله
contentEncoding رشته بله
contentLanguage رشته بله
contentType رشته بله
customMetadata [رشته: رشته] بله

آپلود، دانلود و به‌روزرسانی فایل‌ها مهم است، اما توانایی حذف آنها نیز به همان اندازه مهم است. بیایید یاد بگیریم که چگونه فایل‌ها را از Cloud Storage حذف کنیم.