你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios網絡學習------11 原生API文件上傳之斷點續傳思路

ios網絡學習------11 原生API文件上傳之斷點續傳思路

編輯:IOS開發綜合

\


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; //下載文件 [self download]; } -(void)download { //1. NSURL NSURL *url = [NSURL URLWithString:@"http://loacal/~apple/itcase/download/iTunesConnect_DeveloperGuide_CN.zip"]; //2NSRequest //要判斷網絡服務器上文件的大小,可以使用Http的HEAD方法 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //使用HEAD方法,僅獲取目標文件的信息,而不做實際的下載工作。 //[request setHTTPMethod:@"HEAD"]; /** 設置斷點續傳的思路: HeaderField:頭域(請求頭部的字段) 可以通過指定range的范圍逐步地下載指定范圍內的數據,待下載完成後,再將這些數據拼接成一個文件。 1根據HEAD方法獲取到要下載的文件的總大小、 2在磁盤上建立一個臨時的緩沖文件,該文件的大小與目標文件大小一致 3緩沖文件中所有字節都是默認為0 4開啟多線程,分別加載不同的range頭指定的數據塊,待數據塊加載完成以後,將其分別寫入對應的偏移地址。 5所有數據下載完成以後,表示文件下載完成,將臨時文件名更改為目標文件。 開發的難點: 0 在寫入文件之前,首先要建立一個同等大小的文件。 1 文件的讀寫問題,在oc裡默認是覆蓋,追加,如果要指定位置,需要用seek方法,移動文件指針。 2在多線程寫入文件時,文件的鎖定操作是一個問題。 */ [request setValue:@"bytes=0-499" forKeyPath:@"range"];//表示只讀取數據的第0個字節到第499個字節。 //3NSURLConnection //如果要獲取文件長度,可以在Response中獲取到 NSURLResponse *response = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //在response的expectedcontentlength屬性中,可以獲知要卸載的文件的文件長度。 NSLog(@"%lld %d%@", [response expectedContentLength], data.length, data); } @end











  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved