AFNetworking 下載文件斷點續傳操作


一:本示例代碼包括:

  • 文件下載,寫入指定目錄
  • 下載進度,回調Progress;
  • 斷點續傳,下載暫停,繼續操作;

二:本項目 適用於 AFNetworking 1.x 版本

 1 #pragma mark 斷點續傳下載;
 2     
 3     //斷點下載續傳--需要服務器端的支持,本次測試為下載百度音樂,此接口,會在第二次暫停,繼續下載時,出404錯誤;
 4     
 5     //進度
 6     UIProgressView  *downProgressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
 7     downProgressView.center = CGPointMake(self.view.center.x, 20);
 8     downProgressView.progress = 0;
 9     downProgressView.progressTintColor = [UIColor blueColor];
10     downProgressView.trackTintColor = [UIColor grayColor];
11     [self.view addSubview:downProgressView];
12     
13     //開始
14     UIButton *start = [UIButton buttonWithType:UIButtonTypeRoundedRect];
15     start.frame = CGRectMake(25, 40, 80, 30);
16     [start setTitle:@"開始" forState:UIControlStateNormal];
17     [start addTarget:self action:@selector(startDownloadOp) forControlEvents:UIControlEventTouchUpInside];
18     
19     //暫停
20     UIButton *pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
21     pause.frame = CGRectMake(125, 40, 80, 30);
22     [pause setTitle:@"暫停" forState:UIControlStateNormal];
23     [pause addTarget:self action:@selector(pausetDownloadOp) forControlEvents:UIControlEventTouchUpInside];
24     
25     //繼續
26     UIButton *resume = [UIButton buttonWithType:UIButtonTypeRoundedRect];
27     resume.frame = CGRectMake(220, 40, 80, 30);
28     [resume setTitle:@"繼續" forState:UIControlStateNormal];
29     [resume addTarget:self action:@selector(resumeDownloadOp) forControlEvents:UIControlEventTouchUpInside];
30     
31     [self.view addSubview:start];
32     [self.view addSubview:pause];
33     [self.view addSubview:resume];
34     
35     //文件名
36     NSString *fileName = [NSString stringWithFormat:@"%@願得一人聽.mp3",NSTemporaryDirectory()];
37     NSLog(@"%@",fileName);
38     
39     //下載
40     NSURLRequest *downloadRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:MusicOne]];
41     self.downloadMusicOP = [[AFHTTPRequestOperation alloc]initWithRequest:downloadRequest];
42     _downloadMusicOP.outputStream = [NSOutputStream outputStreamToFileAtPath:fileName append:NO];
43     
44     [_downloadMusicOP setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
45         CGFloat progress = ((float)totalBytesRead) / totalBytesExpectedToRead;
46         [downProgressView setProgress:progress animated:YES];
47         start.enabled = NO;
48         [start setTitle:@"下載中" forState:UIControlStateNormal];
49     }];
50     
51     [_downloadMusicOP setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
52         start.enabled = NO;
53         [start setTitle:@"完成" forState:UIControlStateNormal];
54         NSLog(@"download finish");
55         NSLog(@"%@",[[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil]);
56         
57     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
58         NSLog(@"error %@",error);
59     }];
60     
61         
62 
63     
64     
65 }
66 
67 #pragma mark AFNetworking 下載之斷點續傳;
68 
69 - (void)startDownloadOp
70 {
71     [_downloadMusicOP start];
72 }
73 
74 - (void)pausetDownloadOp
75 {
76     [_downloadMusicOP pause];
77 }
78 
79 - (void)resumeDownloadOp
80 {
81     [_downloadMusicOP resume];
82 }

   項目代碼:http://git.oschina.net/cocoajin/AFNetworkingTest

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM