تسمح لك API التحميل القابل للاستئناف بتحميل ملفات كبيرة في Graph API واستئناف جلسات التحميل التي تمت مقاطعتها من دون الحاجة إلى البدء من جديد. بمجرد اكتمال التحميل، يمكنك استخدام مؤشر الملف الذي تم تحميله مع نقاط نهاية Graph API الأخرى التي تدعمه.
لاحظ أن API التحميل القابل للاستئناف ليست الطريقة الوحيدة لتحميل الملفات. تحتوي العديد من العُقد على عنصر ربط يدعم التحميل، ولكن لا يمتلك أغلبها طريقة لمعالجة الملفات الكبيرة أو طريقة لاستئناف جلسة التحميل بعد مقاطعتها.
ستشير مراجع نقاط النهاية التي تدعم مؤشرات الملفات التي تم تحميلها إلى ما إذا كانت نقاط النهاية تدعم المؤشرات التي يتم إرجاعها بواسطة API التحميل القابل للاستئناف.
تنطوي عملية تحميل الملف على خطوتين:
إذا نجحت العملية، فسيتم إرجاع مؤشر الملف الذي يمكنك استخدامه فيما بعد مع نقاط النهاية الأخرى التي تدعم مؤشرات الملفات التي تم إرجاعها بواسطة API التحميل القابل للاستئناف.
أرسل POST
طلبًا يصف ملفك لنقطة نهاية تحميلات التطبيق ({app-id}/uploads
) . عند نجاح العملية، سيتم إرجاع معرف جلسة تحميل والذي يمكنك استخدامه في الخطوة التالية لبدء التحميل.
POST https://graph.facebook.com/{api-version}/{app-id}/uploads &file_length={file-length} &file_type={file-type} &access_token={access-token}
العناصر النائبة للمعلمات:
{api-version}
— إصدار Graph API.{app-id}
— معرف التطبيق. الملف الذي تم تحميله والذي سيتم ربطه بهذا التطبيق. يجب أن يتوفر لدى مستخدم التطبيق دور مسؤول أو مطوّر في هذا التطبيق.file-length
— حجم الملف بالبايت. file-type
— نوع MIME للملف. القيم الصالحة هي: application/pdf
وimage/jpeg
وimage/jpg
وimage/png
وvideo/mp4
{access-token}
— رمز وصول المستخدم الخاص بمستخدم التطبيق.يمكنك الاطلاع على مرجع نقطة نهاية عمليات تحميل التطبيق للحصول على قائمة كاملة بمعلمات الاستعلام المتوفرة وأنواع الملفات المدعومة.
{ "id": "{id}" }
قيم خاصية الاستجابة:
{id}
— معرف جلسة التحميل.
curl -X POST \
"https://graph.facebook.com/v19.0
/584544743160774/uploads?file_length=109981&file_type=image/png&access_token=EAAIT..."
{ "id": "upload:MTphd..." }
يمكنك بدء جلسة التحميل من خلال إرسال طلب POST
إلى عنوان مضيف Graph API وإلحاق جلسة التحميل {id}
مع العناوين المطلوبة الموضحة أدناه. وعند نجاح العملية، يتم إرجاع مؤشر الملف {h}
والذي يمكنك استخدامه فيما بعد مع أي نقاط نهاية Graph API التي تدعم مؤشرات الملفات التي تم إرجاعها بواسطة API التحميل القابل للاستئناف.
إذا كانت جلسة التحميل تستغرق وقتًا أطول مما هو متوقع أو تمت مقاطعتها، فاتبع الخطوات الموضَّحة في قسم حالات المقاطعة.
POST https://graph.facebook.com/{api-version}/{upload-session-id} --header 'Authorization: OAuth {access-token}' --header 'file_offset: 0' --data-binary @{file-name}
قيم العناصر النائبة
{api-version}
— إصدار Graph API.{upload-session-id}
— معرف جلسة التحميل الذي تم إرجاعه في الخطوة الأولى.{access-token}
— رمز وصول المستخدم الخاص بمستخدم التطبيق. يجب أن يكون لمستخدم التطبيق دور في التطبيق المستهدف في الخطوة الأولى.{file-name}
— اسم الملف المطلوب تحميله.يجب تضمين رمز الوصول في العنوان وإلا فسيفشل طلبك.
{ "h": "{h}" }
قيم خاصية الاستجابة:
{h}
— مؤشر الملف الخاص بالملف الذي تم تحميله
curl -X POST \
"https://graph.facebook.com/v19.0
/upload:MTphd..." \
--header "Authorization: OAuth EAAIT..." \
--header "file_offset: 0" \
--data-binary @cats_are_jerks.png
{ "h": "2:c2FtcGxl..." }
إذا بدأت جلسة تحميل ولكن استغرق الأمر أكثر من المتوقع أو تمت مقاطعته، فأرسل طلبًا GET
إلى عنوان مضيف Graph API وألحق معرف جلسة التحميل. تعمل API على إرجاع قيمة file_offset
والتي يمكنك استخدامها لاستئناف عملية التحميل من حيث توقفت.
GET https://graph.facebook.com/{api-version}/{upload-session-id} ?access_token={access-token}
قيم العناصر النائبة:
{api-version}
— إصدار Graph API.{upload-session-id}
— معرف جلسة التحميل الذي تم إرجاعه في الخطوة الأولى: إنشاء جلسة.{access-token}
— رمز وصول المستخدم الخاص بمستخدم التطبيق.{ "id": "{id}", "file_offset": {file-offset} }
قيم خاصية الاستجابة:
{id}
— معرف جلسة التحميل الذي تم الاستعلام عنه.{file-offset}
— عدد صحيح يشير إلى عدد وحدات البايت التي تم تحميلها بنجاح.التقط القيمة file_offset
وكرر الخطوة الثانية: بدء التحميل، مع تعيين القيمة إلى عنوان file_offset
المتوافق. سيؤدي هذا إلى استئناف عملية التحميل من نقطة التوقف.
curl -X GET \
"https://graph.facebook.com/v19.0
/upload:MTphd...&access_token=EAAIT..." \
{ "id": "upload:MTphd", "file_offset": 5238 }