iOS開發之斷點續傳
阿新 • • 發佈:2020-08-12
開發者在開發過程時,經常需要進行下載資料或上傳資料,要使用該功能就需要實現斷點續傳功能。
斷點續傳功能的實現首先一點要求,後端必須支援。如果後端不支援,則一切都是空談,不過目前大多數的服務端都是支援的。
斷點續傳的核心
斷點續傳的核心是依賴 HTTP 協議通過定義 Header
的 Range
來實現的。有了 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 進行請求 */