全部產品
Search
文件中心

Drive and Photo Service:檔案下載

更新時間:Dec 09, 2024

當您需要下載儲存在 pds 上的檔案時,我們提供了多種下載方式,以滿足不同的下載情境。

直接擷取檔案下載連結進行下載

調用GetDownloadUrl - 擷取檔案下載地址介面,擷取檔案的臨時下載連結。

檔案的下載連結有時效限制,預設為 15 分鐘,最長支援 32 個小時,請在擷取到連結後的有效期間內進行下載,如果連結到期,則需要重新調用介面擷取下載連結。如果您在有效期間內已經開始進行下載,只要傳輸沒有中斷,下載過程中即使超過了有效期間也不會受到影響。

斷點續傳

當您在通過下載連結下載大檔案時,可以通過在下載請求的 header 中設定Range頭,指定從檔案某個位置進行下載。

Range有效區間在 0 至 file size -1 的範圍內,具體樣本如下:

  • Range: bytes=0-499 表示第0~499位元組範圍的內容。

  • Range: bytes=500-999 表示第500~999位元組範圍的內容。

  • Range: bytes=-500 表示最後500位元組的內容。

  • Range: bytes=500- 表示從第500位元組開始到檔案結束部分的內容。

  • Range: bytes=0- 表示從第一個位元組到最後一個位元組,即完整的檔案內容。

並發下載

對於大檔案如果串列下載所有內容,耗時可能較長,為了提升下載速度,可以開啟多個並發,通過設定前述的 Range 頭,並發下載一個檔案的不同分段,最後按分段位置合成檔案。

比如您要下載一個 300 MB 的檔案,可以分成 3 個並發,每個並發下載其中 100 MB 內容。

  • 線程 1,設定 Range: bytes=0-104857599

  • 線程 2,設定 Range: bytes=104857600-209715199

  • 線程 3,設定 Range: bytes=209715200-314572799

image

通過 HTTP 302 跳轉進行下載

通過調用DownloadFile - 下載檔案介面可以直接下載檔案,該介面會以 HTTP 302 方式返回下載連結。

適用情境:

  1. 如果您是在網頁瀏覽器上使用,希望通過瀏覽器直接下載檔案;

  2. 如果你的系統需要對檔案資料進行緩衝(如一些圖片組件),因為通過調用GetDownloadUrl - 擷取檔案下載地址的臨時連結每次都不一樣,導致緩衝無法命中,所以您可以改為調用DownloadFile - 下載檔案介面,在其URL的 querystring 中指定drive_id 和 file_id, 相同檔案這個 URL一直不變,適合Cache系統。需要注意在訪問此介面時有一次重新導向,需要在程式中支援。