استخدم البيانات التعريفية للملفات مع Cloud Storage على منصات Apple

بعد تحميل ملف إلى مرجع التخزين السحابي، يمكنك أيضًا الحصول على البيانات التعريفية للملف وتحديثها، على سبيل المثال لتحديث نوع المحتوى. يمكن للملفات أيضًا تخزين أزواج المفاتيح/القيم المخصصة مع بيانات تعريف الملف الإضافية.

الحصول على البيانات الوصفية للملف

تحتوي البيانات التعريفية للملف على خصائص شائعة مثل name و size و contentType (يُشار إليها غالبًا بنوع MIME) بالإضافة إلى بعض الخصائص الأقل شيوعًا مثل contentDisposition و timeCreated . يمكن استرداد هذه البيانات التعريفية من مرجع التخزين السحابي باستخدام طريقة metadataWithCompletion:

سويفت

// 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 [سلسلة: سلسلة] نعم

من المهم تحميل الملفات وتنزيلها وتحديثها، ولكن من المهم أيضًا القدرة على إزالتها. دعونا نتعلم كيفية حذف الملفات من التخزين السحابي.