iOS開發之網路編程--3、NSURLSessionDataTask實現檔案下載(離線斷點續傳下載),nsurlsession斷點續傳

來源:互聯網
上載者:User

iOS開發之網路編程--3、NSURLSessionDataTask實現檔案下載(離線斷點續傳下載),nsurlsession斷點續傳

前言:使用NSURLSessionDownloadTask滿足不這個需要離線斷點續傳的下載需求,所以這裡就需要使用NSURLSessionDataTask的代理方法來處理下載大檔案,並且實現離線斷點續傳。

   關於NSURLSessionDownloadTask的知識,可以請讀者閱讀本人的前篇:《iOS開發之網路編程--2、NSURLSessionDownloadTask檔案下載》。

   另外呢,因為NSURLSessionDownloadTask和NSURLSessionDataTask分別都是NSURLSessionTask的上層繼承拓展。比如NSURLSessionDownloadTask在代理方法中內部實現了

   將檔案邊下載邊移存到沙箱中,而使用NSURLSessionDataTask就需要自己完成這個過程了,但是NSURLSessionDataTask可以實現離線斷點續傳。

 

實現離線的斷點續傳的基本思路:

  1、比如應用程式下載15M的小視視頻,但是下載到5M的時候這個程式可能是因為使用者需要其退出或者是意外崩潰退出或者是斷網了,導致還有10M沒有下載成功。

  2、為了能夠在重新啟動程式之後還能夠繼續下載剩下的10M,需要在程式繼續下載的時候判斷和讀取本機快取中是否存在已經下載的資料和資料長度,然後在該資料長度之後繼續下載剩下的部分。

 

用於測試代碼的API介面:http://120.25.226.186:32812/resources/videos/minion_02.mp4  

 

1、NSURLSessionDataTask實現檔案下載(未實現離線斷點續傳下載)

  1-1、編程思路實現細節:    <a> 建立會話和請求,最後由會話建立請求任務,並啟動任務。     <b>添加協議<NSURLSessionDataDelegate> ,設定代理,實現代理方法。    <c>在擷取伺服器返回的響應代理方法中擷取檔案名稱和要下載的檔案長度,拼接沙箱路徑,根據該路徑建立輸出資料流,開啟輸出資料流。別忘了還需要設定接收伺服器響應。    <d>在擷取伺服器返回的資料代理方法中,不斷的使用輸出資料流將資料寫入,並通過擷取的資料設定進度條進度。    <e>在結束伺服器請求的代理方法中,關閉輸出資料流,釋放輸出資料流的指標。另外可能會需要列印錯誤資訊。  1-2、代碼實現:   2、NSURLSessionDataTask實現檔案下載(實現離線斷點續傳下載)  2-1、編程思路實現細節:    <a> 根據檔案名稱拼接沙箱路徑,直接擷取該檔案的屬性,如果沒有該檔案,則返回的是nil,如果有該檔案,則讀取檔案其中的一個屬性:檔案資料的長度。    <b>建立會話和可變請求,佈建要求頭資訊,告訴伺服器返回的資料從已經下載的檔案長度後面開始下載,最後由會話建立請求任務,並啟動任務。    <c>添加協議<NSURLSessionDataDelegate> ,設定代理,實現代理方法。    <d>在擷取伺服器返回的響應代理方法中擷取檔案名稱和要下載的檔案長度,拼接沙箱路徑,根據該路徑建立輸出資料流,開啟輸出資料流。別忘了還需要設定接收伺服器響應。    <e>在擷取伺服器返回的資料代理方法中,不斷的使用輸出資料流將資料寫入,並通過擷取的資料設定進度條進度。    <f>在結束伺服器請求的代理方法中,關閉輸出資料流,釋放輸出資料流的指標。另外可能會需要列印錯誤資訊。    <g>最後別忘了釋放會話對象(兩種方法均可)    2-2、源碼展示:           

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.