NSURLSessionDownloadTask 下載/斷點下載

實現(xiàn)協(xié)議NSURLSessionDownloadDelegate的2個方法
此方法主要返回文件的字節(jié)數(shù)以及已下載的字節(jié)數(shù)

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite;

儲存的零時文件路徑location

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location;

樣式圖锨匆,由于網(wǎng)速太快亿扁,手速跟不上如蚜,加載圖片太快沒來得及點擊暫停下載以及就加載出來了择镇,大家如果想實現(xiàn)可以把路徑改為一個大一點的文件挡逼,這樣就能看的很明顯了。

屏幕快照 2016-04-14 下午1.33.37.png

屏幕快照 2016-04-14 下午1.32.49.png

代碼實現(xiàn)

#import "ViewController.h"

@interface ViewController () <NSURLSessionDownloadDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *loadImage;
@property (weak, nonatomic) IBOutlet UIProgressView *progress;
@property (weak, nonatomic) IBOutlet UILabel *loadPlan;
@property (weak, nonatomic) IBOutlet UIButton *loadTitle;

@property (nonatomic, strong) NSData *data;

@property (nonatomic, strong) NSURLSession *session;

@property (nonatomic, strong) NSURLSessionDownloadTask *task;

@property (nonatomic, assign) BOOL judgeDown;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
/**
 *  下載的字節(jié)
 *
 *  @param session                   session
 *  @param downloadTask              taskdownload
 *  @param bytesWritten              每次下載的字節(jié)
 *  @param totalBytesWritten         已下載的字節(jié)
 *  @param totalBytesExpectedToWrite 總字節(jié)
 */
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
    //進度條計算
    CGFloat progress = (totalBytesWritten*1.0)/totalBytesExpectedToWrite;
    //異步添加到主隊列下載
    dispatch_async(dispatch_get_main_queue(), ^{
        _progress.progress = progress;
        _loadPlan.text = [NSString stringWithFormat:@"開始下載:%d/100",(int)(progress*100)];
    }) ;
}
/**
 *  NSURLSessionDownloadDelegate委托協(xié)議
 *
 *  @param session      session
 *  @param downloadTask sessiontask
 *  @param location     儲存的零時文件路徑
 */
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{
    
    NSFileManager *manager = [NSFileManager defaultManager];
    //獲取document目錄
    NSString *strDocument = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    //在原有路徑上添加路徑
    NSString *strURL = [strDocument stringByAppendingPathComponent:@"1250538257738.jpg"];
    //本地URL路徑
    NSURL *url = [NSURL fileURLWithPath:strURL];
    
    if ([manager fileExistsAtPath:strURL]) {
        [manager removeItemAtPath:strURL error:nil];
    }
    //把tem文件移動指定的URL路徑上
    if ([manager moveItemAtURL:location toURL:url error:nil]) {
        _data = [manager contentsAtPath:strURL];
        _loadImage.image = [UIImage imageWithData:_data];
    }
    
    
}
- (IBAction)onClick:(id)sender {
    NSString *strURL = @"http://img.pconline.com.cn/images/bbs4/20098/18/1250538257738.jpg";
    NSURL *url = [NSURL URLWithString:strURL];
    //創(chuàng)建config對象
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    //創(chuàng)建session對象腻豌,并添加到主隊列中
    _session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
    //下載路徑
     _task = [_session downloadTaskWithURL:url];
    [_task resume];
}
- (IBAction)suspendLoad:(id)sender {
    if (_judgeDown) {
        NSLog(@"恢復下載");
        _loadTitle.titleLabel.text = @"暫停下載";
        if(!_data){
            NSURL *url = [NSURL URLWithString:@"http://img.pconline.com.cn/images/bbs4/20098/18/1250538257738.jpg"];
//            _request = [NSURLRequest requestWithURL:url];
//            _task = [_session downloadTaskWithRequest:_request];
            _task = [_session downloadTaskWithURL:url];
        }else{
            _task = [_session downloadTaskWithResumeData:_data];
        }
        [_task resume];
    }else{
        NSLog(@"暫停下載");
        _loadTitle.titleLabel.text = @"恢復下載";
        //取消下載并調(diào)用回調(diào)與恢復數(shù)據(jù)供以后使用
        [_task cancelByProducingResumeData:^(NSData *resumeData) {
            _data = resumeData;
        }];
        _task = nil;
        _judgeDown = YES;
    }
}

@end

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末家坎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吝梅,更是在濱河造成了極大的恐慌虱疏,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苏携,死亡現(xiàn)場離奇詭異做瞪,居然都是意外死亡,警方通過查閱死者的電腦和手機右冻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門装蓬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纱扭,你說我怎么就攤上這事牍帚。” “怎么了乳蛾?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵暗赶,是天一觀的道長。 經(jīng)常有香客問我屡久,道長忆首,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任被环,我火速辦了婚禮糙及,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筛欢。我一直安慰自己浸锨,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布版姑。 她就那樣靜靜地躺著柱搜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剥险。 梳的紋絲不亂的頭發(fā)上聪蘸,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音,去河邊找鬼健爬。 笑死控乾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的娜遵。 我是一名探鬼主播蜕衡,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼设拟!你這毒婦竟也來了慨仿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤纳胧,失蹤者是張志新(化名)和其女友劉穎镰吆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躲雅,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鼎姊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了相赁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片相寇。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钮科,靈堂內(nèi)的尸體忽然破棺而出唤衫,到底是詐尸還是另有隱情,我是刑警寧澤绵脯,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布佳励,位于F島的核電站,受9級特大地震影響蛆挫,放射性物質(zhì)發(fā)生泄漏赃承。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一悴侵、第九天 我趴在偏房一處隱蔽的房頂上張望瞧剖。 院中可真熱鬧,春花似錦可免、人聲如沸抓于。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捉撮。三九已至,卻和暖如春妇垢,著一層夾襖步出監(jiān)牢的瞬間巾遭,已是汗流浹背肉康。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灼舍,地道東北人迎罗。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像片仿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尤辱,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理砂豌,服務發(fā)現(xiàn),斷路器光督,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • iOS開發(fā)系列--網(wǎng)絡開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網(wǎng)絡開發(fā)阳距,例如說新浪微博、微信等结借,這些應用本身可...
    lichengjin閱讀 3,641評論 2 7
  • 小胖船老,實際就是小學時期的我兒子咖熟。 小學五年級,十一歲柳畔,他的體重已經(jīng)超過140斤了馍管,個子還沒我這個不到一米六的矮冬瓜...
    那霞閱讀 506評論 0 2
  • 最近碩士畢業(yè)要論文查重确沸,一直在忙這個事情,不斷地完善自己的文章俘陷,希望能平安順利地結(jié)束學生時代罗捎。 今天主要是跟大家分...
    指微寒閱讀 736評論 4 16