อัพโหลดไฟล์

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

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

ก่อนเริ่มต้น

คู่มือนี้จะถือว่าคุณได้อ่านคู่มือภาพรวม API กราฟและคู่มือการพัฒนา Meta และดำเนินการที่จำเป็นสำหรับการพัฒนากับ Meta มาแล้ว

คุณจำเป็นต้องมีสิ่งต่อไปนี้

  • ID แอพ Meta
  • ไฟล์รูปแบบใดรูปแบบหนึ่งต่อไปนี้
    • pdf
    • jpeg
    • jpg
    • png
  • โทเค็นการเข้าถึงผู้ใช้

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

เพื่อเริ่มเซสชั่นการอัพโหลด ให้ส่งคำขอ POST ไปยังตำแหน่งข้อมูล /<APP_ID>/uploads ซึ่ง ID ของแอพ Meta ของคุณเป็น <APP_ID> โดยระบุพารามิเตอร์ที่จำเป็นดังต่อไปนี้

  • file_name - ชื่อไฟล์ของคุณ
  • file_length - ขนาดไฟล์ โดยมีหน่วยเป็นไบต์
  • file_type - ประเภท MIME ของไฟล์ ค่าที่ถูกต้อง ได้แก่ application/pdf, image/jpeg, image/jpg, image/png และ video/mp4

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

จัดรูปแบบเพื่อให้อ่านได้ง่าย

curl -i -X POST "https://graph.facebook.com/v21.0/<APP_ID>/uploads
  ?file_name=<FILE_NAME>
  &file_length=<FILE_LENGTH>
  &file_type=<FILE_TYPE>
  &access_token=<USER_ACCESS_TOKEN>"

เมื่อดำเนินการสำเร็จ แอพของคุณจะได้รับการตอบกลับแบบ JSON ที่มี ID เซสชั่นการอัพโหลด

{
  "id": "upload:<UPLOAD_SESSION_ID>"
}

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

เริ่มอัพโหลดไฟล์โดยการส่งคำขอ POST ไปยังตำแหน่งข้อมูล /upload:<UPLOAD_SESSION_ID> โดยที่ตั้งค่า file_offset ต่อไปนี้ให้เป็น 0

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

curl -i -X POST "https://graph.facebook.com/v21.0/upload:<UPLOAD_SESSION_ID>"
  --header "Authorization: OAuth <USER_ACCESS_TOKEN>"
  --header "file_offset: 0"
  --data-binary @<FILE_NAME>

คุณจะต้องใส่โทเค็นการเข้าถึงไว้ในส่วนหัว มิฉะนั้นจะเรียกใช้ไม่สำเร็จ

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

{
  "h": "<UPLOADED_FILE_HANDLE>"
}

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

{
    "h": "2:c2FtcGxl..."
}

ดำเนินการอัพโหลดต่อจากที่ค้างไว้

หากคุณเริ่มเซสชั่นการอัพโหลดไปแล้วแต่ใช้เวลานานกว่าที่คาดไว้หรือเกิดการติดขัดขึ้น ให้ส่งคำขอ GET ไปยังตำแหน่งข้อมูล /upload:<UPLOAD_SESSION_ID> จากขั้นตอนที่ 1

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

จัดรูปแบบเพื่อให้อ่านได้ง่าย

curl -i -X GET "https://graph.facebook.com/v21.0/upload:<UPLOAD_SESSION_ID>"
  --header "Authorization: OAuth <USER_ACCESS_TOKEN>""

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

{
  "id": "upload:<UPLOAD_SESSION_ID>"
  "file_offset": <FILE_OFFSET>"
}

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

ขั้นตอนถัดไป