91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IOS 斷點續傳

發布時間:2020-07-19 19:39:14 來源:網絡 閱讀:455 作者:zfajqp 欄目:移動開發

 創建一個ASINetworkQueue全局隊列,隊列里可以添加請求

- (void)viewDidLoad

{

    queue = [[ASINetworkQueue alloc] init];

    //設置支持較高精度的進度追蹤

    [queue setShowAccurateProgress:YES];

    //啟動

    [queue go];

}

 

 

 

緊接著創建我們的下載請求:

- (IBAction)startDownload

{

//Documents路徑

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

//下載路徑

 downloadPath = [[path stringByAppendingPathComponent:@"A.txt"] retain];

//要支持斷點續傳,緩存路徑是不能少的。

NSString *tempPath = [path stringByAppendingPathComponent:@"A.temp"];

//下載鏈接

NSURL *url = [NSURL URLWithString:@""];

//創建請求

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

//設置代理,別忘了在頭文件里添加ASIHTTPRequestDelegate協議

request.delegate = self;

//設置下載路徑

 [request setDownloadDestinationPath:downloadPath];

//設置緩存路徑

[request setTemporaryFileDownloadPath:tempPath];

//設置支持斷點續傳

[request setAllowResumeForFileDownloads:YES];

request.downloadProgressDelegate = self;

[queue addOperation:request];

}

//請求開始

- (void)requestStarted:(ASIHTTPRequest *)request;

//請求收到響應的頭部,主要包括文件大小信息,下面會用到

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders;

//請求將被重定向

- (void)request:(ASIHTTPRequest *)request willRedirectToURL:(NSURL *)newURL;

//請求完成

- (void)requestFinished:(ASIHTTPRequest *)request;

//請求失敗

- (void)requestFailed:(ASIHTTPRequest *)request;

//請求已被重定向

- (void)requestRedirected:(ASIHTTPRequest *)request;

 

下面是我們對頭部信息的處理

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders

{

    NSLog(@”%@”,responseHeaders);

    if (fileLength == 0) {

        fileLength = request.contentLength/1024.0/1024.0;

        totalPro.text = [NSString stringWithFormat:@"%.2fM",fileLength];

    }

}

我們可以從中看到文件大小等一些請求信息,這時request自己也知道了文件大小,所以我們直接使用request的contentLength屬性

 

這是處理進度的方法(request會自動調用該方法):

- (void)setProgress:(float)newProgress

{

    progressView.progress = newProgress;

    currentPro.text = [NSString stringWithFormat:@"%.2fM",fileLength*newProgress];

}

 

下面是暫停方法用來測試斷點

- (IBAction)pauseDownload

{

    //operations方法返回隊列里的所有請求,但我們只有一個請求

    ASIHTTPRequest *request = [[queue operations] objectAtIndex:0];

    //取消請求

    [request clearDelegatesAndCancel];

}

隊列里只有一個請求。

這里說是暫停,其實request已經完全被取消了!下面說說斷點續傳

因為開啟了斷點續傳,并且設置了緩存路徑,所以request取消時就會在緩存文件里打斷點,當我們在次執行上面的startDownload方法時,緩存路徑還是之前的緩存路徑,request會自動從緩存文件中的斷點后開始下載,頭部中的文件大小值也是從斷點之后開始算的。ASIHTTPRequest已經為你打點好了一切。

繼續,當請求完成時,也就是我們的文件已經下載好了的時候,下載好的文件會在我們之前指定的下載路徑下生成,同時緩存文件會被刪除。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆德县| 蒙山县| 仪征市| 达孜县| 来安县| 阳高县| 西宁市| 榆中县| 麻阳| 罗定市| 河南省| 阳泉市| 安岳县| 平泉县| 岑溪市| 天祝| 石嘴山市| 安龙县| 屏东市| 抚远县| 辰溪县| 澄江县| 谢通门县| 突泉县| 敦化市| 蕲春县| 汝城县| 织金县| 郁南县| 博白县| 吉安市| 伊金霍洛旗| 焉耆| 广西| 犍为县| 张家界市| 龙岩市| 葫芦岛市| 永善县| 彭泽县| 错那县|