1. 程式人生 > 實用技巧 >iOS開發之斷點續傳

iOS開發之斷點續傳

開發者在開發過程時,經常需要進行下載資料或上傳資料,要使用該功能就需要實現斷點續傳功能。

斷點續傳功能的實現首先一點要求,後端必須支援。如果後端不支援,則一切都是空談,不過目前大多數的服務端都是支援的。

斷點續傳的核心

斷點續傳的核心是依賴 HTTP 協議通過定義 HeaderRange 來實現的。有了 Range 就是通過 HTTP 就可以瞭解到確實的資源,從實現到斷點續傳。Range 是以位元組開始計算的,在設定的時候,不需要一定給出結尾位元組數,因為一般請求者是不知道總資料位元組數的。

示例程式碼如下:

/// 根據 url 建立的 Request
var request = URLRequest(url: url)
        
/// 獲取本地檔案的資料大小
if FileManager.default.fileExists(atPath: filePath), let data = FileManager.default.contents(atPath: filePath) {
    let range = "bytes=%ld-\(data.count)"
    request.setValue(range, forHTTPHeaderField: "Range")
}

/* 使用 request 進行請求 */