上傳檔案

透過可續傳的上傳 API,您可將大型檔案上傳到 Meta 的社交關係圖,並能恢復中斷的上傳連線階段,而無需重新開始。檔案上傳完畢後,便能發佈檔案。

透過支援所上傳檔案處理常式的端點參照,將得知該端點是否支援可續傳的上傳 API 所傳回的處理常式。

準備工作

本指南假設您已閱讀圖形 API 總覽Meta 開發指南,並已採取必要動作以使用 Meta 進行開發。

必備資料:

  • Meta 應用程式編號
  • 以下其中一種格式的檔案:
    • pdf
    • jpeg
    • jpg
    • png
  • 用戶存取權杖

步驟 1:開始上傳連線階段

若要啟動上傳連線階段,請向 /<APP_ID>/uploads 端點傳送 POST 要求,其中 <APP_ID> 為應用程式的 Meta 編號,並須包含以下必要參數:

  • file_name - 檔案名稱
  • file_length - 檔案大小(位元)
  • file_type - 檔案的 MIME 類型。有效值為:application/pdfimage/jpegimage/jpgimage/pngvideo/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": "upload:<UPLOAD_SESSION_ID>"
}

步驟 2:開始上傳

若要開始上傳檔案,請向 /upload:<UPLOAD_SESSION_ID> 端點傳送 POST 要求,並將 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..."
}

恢復中斷的上傳作業

如果您已啟動上傳連線階段,但花費的時間超過預期或已中斷,請向步驟 1 中的 /upload:<UPLOAD_SESSION_ID> 端點傳送 GET 要求。

要求語法

採用方便閱讀的格式。

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 相同。如此便會從中斷點恢復上傳程序。

後續步驟