阅读背景:

iOS开发系列-文件下载

来源:互联网 

小文件下载

NSURLConnection下载小文件

#import "ViewController.h"

@interface ViewController ()<NSURLConnectionDataDelegate>
/** 记录文件的总大小 */
@property (nonatomic, assign) long long totalSize;
/** 下载的文件名  */
@property (nonatomic, strong) NSString *fileName;
/** 已经下载的data */
@property (nonatomic, strong) NSMutableData *downLoadData;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSURL *url = [NSURL URLWithString:@"https://120.25.226.186:32812/resources/videos/minion_04.mp4"];
    NSURLRequest *rquest = [NSURLRequest requestWithURL:url];
    // 发送请求
    [NSURLConnection connectionWithRequest:rquest delegate:self];
    
}

#pragma mark - NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *httpRespone = (NSHTTPURLResponse *)response;
    _totalSize = httpRespone.expectedContentLength; // 获取下载文件的总大小
    _fileName = httpRespone.suggestedFilename; // 下载文件的名
    NSLog(@"%@", httpRespone);
    // 获取响应头字段的value
    // NSString *contentLength = httpRespone.allHeaderFields[@"Content-Length"]; // 也可以获取文件的总长度
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // 拼接NSData
    [self.downLoadData appendData:data];
    
    // 计算进度
    NSUInteger currLength = self.downLoadData.length;
    double progress = (currLength * 1.0 / self.totalSize) * 100;
    NSLog(@"------------------%@", [NSString stringWithFormat:@"%.2f%%", progress]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // 下载完成将下载的Data写入沙河
    NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
    NSString *filePath = [path stringByAppendingPathComponent:self.fileName];
    [self.downLoadData writeToFile:filePath options:kNilOptions error:nil];
    
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    
}

@end#import "ViewCon



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: