iOS AFNetworking下载文件

来源:互联网 发布:淘宝评论在哪里 编辑:程序博客网 时间:2024/04/29 00:49

1.

        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];        NSURL *URL = [NSURL URLWithString:strUrl];        NSURLRequest *request = [NSURLRequest requestWithURL:URL];        NSProgress *progress = nil;        NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:&progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {            return [NSURL fileURLWithPath:destFile];        } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {            __strong typeof(self) strongSelf = weakSelf;            if (nil != error)            {                completionBlk(destFile, NO, context);            }            else            {                if (DMSTKAudioCacheTypeAudio == cacheType)                {                    [strongSelf insertAudioDataWithFilePath:name fileSize:response.expectedContentLength createDate:[NSDate date]];                }                else if (DMSTKAudioCacheTypeLyrics == cacheType)                {                    [strongSelf insertLrcDataWithFilePath:name fileSize:response.expectedContentLength createDate:[NSDate date]];                }                                completionBlk(destFile, YES, context);            }        }];        [downloadTask resume];

2. 下载进度

        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];        operation.inputStream   = [NSInputStream inputStreamWithURL:url];        operation.outputStream  = [NSOutputStream outputStreamToFileAtPath:destFile append:NO];                //下载进度控制        [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {            float progress = (float)totalBytesRead / totalBytesExpectedToRead;            if (nil != progressBlk)            {                progressBlk(destFile, progress, context);            }                        if (totalSize <= 0)            {                totalSize = totalBytesExpectedToRead;            }         }];                //已完成下载        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {            __strong typeof(self) strongSelf = weakSelf;                        //...                        if (nil != completionBlk)            {                completionBlk(destFile, YES, context);            }                    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {            if (nil != completionBlk)            {                completionBlk(destFile, NO, context);            }        }];                [operation start];






0 0