AFNetworking的重启程序断点续传

//获取已下载的文件大小 
- (unsigned long long)fileSizeForPath:(NSString *)path { 
    signed long long fileSize = 0; 
    NSFileManager *fileManager = [NSFileManager new]; // default is not thread safe 
    if ([fileManager fileExistsAtPath:path]) { 
        NSError *error = nil; 
        NSDictionary *fileDict = [fileManager attributesOfItemAtPath:path error:&error]; 
        if (!error && fileDict) { 
            fileSize = [fileDict fileSize]; 
        } 
    } 
    return fileSize; 

        //开始下载 
- (void)startDownload { 
    NSString *downloadUrl = @"http://www.xxx.com/xxx.zip"; 
    NSString *cacheDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *downloadPath = [cacheDirectory stringByAppendingPathComponent:@"xxx.zip"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:downloadUrl]]; 
    //检查文件是否已经下载了一部分 
    unsigned long long downloadedBytes = 0; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:downloadPath]) { 
    //获取已下载的文件长度 
        downloadedBytes = [self fileSizeForPath:downloadPath]; 
        if (downloadedBytes > 0) { 
            NSMutableURLRequest *mutableURLRequest = [request mutableCopy]; 
            NSString *requestRange = [NSString stringWithFormat:@"bytes=%llu-", downloadedBytes]; 
            [mutableURLRequest setValue:requestRange forHTTPHeaderField:@"Range"]; 
            request = mutableURLRequest; 
        } 
    } 
    //不使用缓存,避免断点续传出现问题 
    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request]; 
    //下载请求 
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    //下载路径 
    operation.outputStream = [NSOutputStream outputStreamToFileAtPath:downloadPath append:YES]; 
    //下载进度回调 
    [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { 
        //下载进度 
        float progress = ((float)totalBytesRead + downloadedBytes) / (totalBytesExpectedToRead + downloadedBytes); 
    }]; 
    //成功和失败回调 
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
             
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
             
    }]; 
    [operation start]; 


 

 
 
posted @ 2015-12-10 12:50  婆娑年华  阅读(762)  评论(1编辑  收藏  举报