API การอัพโหลดแบบดำเนินการต่อได้

API การอัพโหลดแบบดำเนินการต่อได้ช่วยให้คุณสามารถอัพโหลดไฟล์ขนาดใหญ่ไปยัง API กราฟได้ และดำเนินเซสชั่นการอัพโหลดต่อจากที่ค้างไว้ได้โดยไม่ต้องเริ่มใหม่ทั้งหมด เมื่อมีการอัพโหลด คุณจะสามารถใช้แฮนเดิลของไฟล์ที่อัพโหลดร่วมกับตำแหน่งข้อมูลอื่นๆ ของ API กราฟที่รองรับไฟล์เหล่านั้นได้

โปรดทราบว่า API การอัพโหลดแบบดำเนินการต่อได้ไม่ใช่เพียงวิธีเดียวในการอัพโหลดไฟล์ โหนดหลายรายการจะมีจุดเชื่อมโยงที่รองรับการอัพโหลด แต่ส่วนใหญ่ไม่มีวิธีจัดการกับไฟล์ขนาดใหญ่หรือวิธีดำเนินเซสชั่นการอัพโหลดต่อจากที่ค้างไว้

ข้อมูลอ้างอิงสำหรับตำแหน่งข้อมูลต่างๆ ที่รองรับแฮนเดิลไฟล์ที่อัพโหลดจะระบุว่าตำแหน่งข้อมูลรองรับแฮนเดิลที่ API การอัพโหลดแบบดำเนินการต่อได้ส่งคืนมาหรือไม่

ขั้นตอนการอัพโหลด

กระบวนการอัพโหลดไฟล์มี 2 ขั้นตอนดังต่อไปนี้

  1. ใช้ตำแหน่งข้อมูลการอัพโหลดแอพพลิเคชั่นเพื่ออธิบายไฟล์ของคุณและสร้างเซสชั่นการอัพโหลด
  2. ใช้ ID เซสชั่นการอัพโหลดที่ระบบส่งคืนมาเพื่อเริ่มกระบวนการอัพโหลด

หากสำเร็จ ระบบจะส่งคืนแฮนเดิลไฟล์ ซึ่งคุณสามารถใช้ร่วมกับตำแหน่งข้อมูลอื่นๆ ซึ่งรองรับแฮนเดิลไฟล์ที่ API การอัพโหลดแบบดำเนินการต่อได้ส่งคืนมา

ขั้นตอนที่ 1: สร้างเซสชั่น

ส่งคำขอ POST ที่อธิบายไฟล์ของคุณไปยังตำแหน่งข้อมูลการอัพโหลดแอพพลิเคชั่น ({app-id}/uploads) เมื่อดำเนินการสำเร็จ ระบบจะส่งคืน ID เซสชั่นการอัพโหลด ซึ่งคุณสามารถใช้ในขั้นตอนถัดไปเพื่อเริ่มการอัพโหลดได้

รูปแบบคำสั่งของคำขอ

POST https://graph.facebook.com/{api-version}/{app-id}/uploads
  &file_length={file-length}
  &file_type={file-type}
  &access_token={access-token}

ตัวยึดตำแหน่งพารามิเตอร์:

  • {api-version} — เวอร์ชั่นของ API กราฟ
  • {app-id} — ID แอพพลิเคชั่น ไฟล์ที่อัพโหลดซึ่งจะเชื่อมโยงกับแอพนี้ ผู้ใช้แอพจะต้องมีบทบาทเป็นผู้ดูแลหรือผู้พัฒนาในแอพนี้
  • file-length — ขนาดไฟล์ โดยมีหน่วยเป็นไบต์
  • file-type — ประเภท MIME ของไฟล์ ค่าที่ถูกต้อง ได้แก่ application/pdf, image/jpeg, image/jpg, image/png และ video/mp4
  • {access-token} — โทเค็นการเข้าถึงผู้ใช้ของผู้ใช้แอพ

โปรดดูรายการพารามิเตอร์การสืบค้นที่สามารถใช้งานได้และประเภทไฟล์ที่รองรับแบบครบถ้วนที่ข้อมูลอ้างอิงเกี่ยวกับตำแหน่งข้อมูลการอัพโหลดแอพพลิเคชั่น

การตอบกลับ

{
  "id": "{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..."
}

ขั้นตอนที่ 2: เริ่มการอัพโหลด

เริ่มเซสชั่นการอัพโหลดโดยการส่งคำขอ POST ไปยังที่อยู่โฮสต์ของ API กราฟ และนำ {id} ของเซสชั่นการอัพโหลดไปต่อท้ายร่วมกับส่วนหัวที่จำเป็นต้องระบุซึ่งแสดงอยู่ด้านล่าง เมื่อดำเนินการสำเร็จ ระบบจะส่งแฮนเดิลไฟล์ {h} คืนมา ซึ่งคุณสามารถนำมาใช้ร่วมกับตำแหน่งข้อมูลทั้งหมดของ 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} — เวอร์ชั่นของ API กราฟ
  • {upload-session-id} — ID เซสชั่นการอัพโหลดที่ส่งคืนมาในขั้นตอนที่ 1
  • {access-token} — โทเค็นการเข้าถึงผู้ใช้ของผู้ใช้แอพ ผู้ใช้แอพจะต้องมีบทบาทในแอพที่ถูกกำหนดเป็นเป้าหมายในขั้นตอนที่ 1
  • {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 ไปยังที่อยู่โฮสต์ของ API กราฟ และนำ ID เซสชั่นการอัพโหลดของคุณไปต่อท้าย โดย API จะส่งคืนค่า file_offset ซึ่งคุณสามารถนำมาใช้เพื่อเริ่มกระบวนการอัพโหลดต่อจากจุดที่ติดขัดได้

รูปแบบคำสั่งของคำขอ

GET https://graph.facebook.com/{api-version}/{upload-session-id}
  ?access_token={access-token}

ค่าของตัวยึดตำแหน่ง:

  • {api-version} — เวอร์ชั่นของ API กราฟ
  • {upload-session-id} — ID เซสชั่นการอัพโหลดที่ส่งคืนมาในขั้นตอนที่ 1: สร้างเซสชั่น
  • {access-token} — โทเค็นการเข้าถึงผู้ใช้ของผู้ใช้แอพ

การตอบกลับ

{
  "id": "{id}",
  "file_offset": {file-offset}
}

ค่าคุณสมบัติการตอบกลับ:

  • {id} — ID เซสชั่นการอัพโหลดที่มีการสืบค้น
  • {file-offset} — จำนวนเต็มที่แสดงถึงจำนวนไบต์ที่อัพโหลดสำเร็จแล้ว

ให้บันทึกค่า file_offset เอาไว้ และทำซ้ำขั้นตอนที่ 2: เริ่มการอัพโหลด โดยกำหนดค่าดังกล่าวให้กับส่วนหัว file_offset ที่สอดคล้องกัน ซึ่งจะเป็นการเริ่มกระบวนการอัพโหลดต่อจากจุดที่ติดขัด

ตัวอย่างคำขอ

curl -X GET \
 "https://graph.facebook.com/v19.0/upload:MTphd...&access_token=EAAIT..." \

ตัวอย่างการตอบกลับ

{
  "id": "upload:MTphd",
  "file_offset": 5238
}