IOS斷點(diǎn)續(xù)傳

 創(chuàng)建一個(gè)ASINetworkQueue全局隊(duì)列,隊(duì)列里可以添加請(qǐng)求

為灤平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及灤平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、灤平網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

- (void)viewDidLoad

{

    queue = [[ASINetworkQueue alloc] init];

    //設(shè)置支持較高精度的進(jìn)度追蹤

    [queue setShowAccurateProgress:YES];

    //啟動(dòng)

    [queue go];

}

 

 

 

緊接著創(chuàng)建我們的下載請(qǐng)求:

- (IBAction)startDownload

{

//Documents路徑

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

//下載路徑

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

//要支持?jǐn)帱c(diǎn)續(xù)傳,緩存路徑是不能少的。

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

//下載鏈接

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

//創(chuàng)建請(qǐng)求

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

//設(shè)置代理,別忘了在頭文件里添加ASIHTTPRequestDelegate協(xié)議

request.delegate = self;

//設(shè)置下載路徑

 [request setDownloadDestinationPath:downloadPath];

//設(shè)置緩存路徑

[request setTemporaryFileDownloadPath:tempPath];

//設(shè)置支持?jǐn)帱c(diǎn)續(xù)傳

[request setAllowResumeForFileDownloads:YES];

request.downloadProgressDelegate = self;

[queue addOperation:request];

}

//請(qǐng)求開始

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

//請(qǐng)求收到響應(yīng)的頭部,主要包括文件大小信息,下面會(huì)用到

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

//請(qǐng)求將被重定向

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

//請(qǐng)求完成

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

//請(qǐng)求失敗

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

//請(qǐng)求已被重定向

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

 

下面是我們對(duì)頭部信息的處理

- (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];

    }

}

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

 

這是處理進(jìn)度的方法(request會(huì)自動(dòng)調(diào)用該方法):

- (void)setProgress:(float)newProgress

{

    progressView.progress = newProgress;

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

}

 

下面是暫停方法用來測試斷點(diǎn)

- (IBAction)pauseDownload

{

    //operations方法返回隊(duì)列里的所有請(qǐng)求,但我們只有一個(gè)請(qǐng)求

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

    //取消請(qǐng)求

    [request clearDelegatesAndCancel];

}

隊(duì)列里只有一個(gè)請(qǐng)求。

這里說是暫停,其實(shí)request已經(jīng)完全被取消了!下面說說斷點(diǎn)續(xù)傳

因?yàn)殚_啟了斷點(diǎn)續(xù)傳,并且設(shè)置了緩存路徑,所以request取消時(shí)就會(huì)在緩存文件里打斷點(diǎn),當(dāng)我們?cè)诖螆?zhí)行上面的startDownload方法時(shí),緩存路徑還是之前的緩存路徑,request會(huì)自動(dòng)從緩存文件中的斷點(diǎn)后開始下載,頭部中的文件大小值也是從斷點(diǎn)之后開始算的。ASIHTTPRequest已經(jīng)為你打點(diǎn)好了一切。

繼續(xù),當(dāng)請(qǐng)求完成時(shí),也就是我們的文件已經(jīng)下載好了的時(shí)候,下載好的文件會(huì)在我們之前指定的下載路徑下生成,同時(shí)緩存文件會(huì)被刪除。

文章名稱:IOS斷點(diǎn)續(xù)傳
當(dāng)前URL:http://bm7419.com/article12/jdihdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、域名注冊(cè)手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、App開發(fā)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)