API การอัพโหลดแบบดำเนินการต่อได้ช่วยให้คุณสามารถอัพโหลดไฟล์ขนาดใหญ่ไปยัง API กราฟได้ และดำเนินเซสชั่นการอัพโหลดต่อจากที่ค้างไว้ได้โดยไม่ต้องเริ่มใหม่ทั้งหมด เมื่อมีการอัพโหลด คุณจะสามารถใช้แฮนเดิลของไฟล์ที่อัพโหลดร่วมกับตำแหน่งข้อมูลอื่นๆ ของ API กราฟที่รองรับไฟล์เหล่านั้นได้
โปรดทราบว่า API การอัพโหลดแบบดำเนินการต่อได้ไม่ใช่เพียงวิธีเดียวในการอัพโหลดไฟล์ โหนดหลายรายการจะมีจุดเชื่อมโยงที่รองรับการอัพโหลด แต่ส่วนใหญ่ไม่มีวิธีจัดการกับไฟล์ขนาดใหญ่หรือวิธีดำเนินเซสชั่นการอัพโหลดต่อจากที่ค้างไว้
ข้อมูลอ้างอิงสำหรับตำแหน่งข้อมูลต่างๆ ที่รองรับแฮนเดิลไฟล์ที่อัพโหลดจะระบุว่าตำแหน่งข้อมูลรองรับแฮนเดิลที่ API การอัพโหลดแบบดำเนินการต่อได้ส่งคืนมาหรือไม่
กระบวนการอัพโหลดไฟล์มี 2 ขั้นตอนดังต่อไปนี้
หากสำเร็จ ระบบจะส่งคืนแฮนเดิลไฟล์ ซึ่งคุณสามารถใช้ร่วมกับตำแหน่งข้อมูลอื่นๆ ซึ่งรองรับแฮนเดิลไฟล์ที่ API การอัพโหลดแบบดำเนินการต่อได้ส่งคืนมา
ส่งคำขอ 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..." }
เริ่มเซสชั่นการอัพโหลดโดยการส่งคำขอ 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 }