您的位置:首页 > 理论基础 > 计算机网络

【iOS开发-网络】关于大文件下载

2015-06-14 12:05 706 查看
大文件下载要使用NSURLConnection的代理方法

首先创建好url发出请求

//创建url
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/TFServer/resources/videos/minion_01.mp4"];

//创建请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];

//发出一个异步请求
[NSURLConnection connectionWithRequest:request delegate:self];


然后实现代理方法

得到服务器回应 应该在沙盒中的caches中创建一个空的文件

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

//拿到文件夹caches的沙盒路径
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

//拿到文件的路径
NSString *filepath = [caches stringByAppendingPathComponent:@"minion_01.mp4"];

//拿到文件管理对象 单例
NSFileManager *manage = [NSFileManager defaultManager];

//创造这个文件
[manage createFileAtPath:filepath contents:nil attributes:nil];

//创建一个文件操作对象
self.handler = [NSFileHandle fileHandleForWritingAtPath:filepath];

//文件总长度
self.totalLength = response.expectedContentLength;

}


**NSFileHandle就像一个游标一样,每次移到文件的尾部,然后写入data

每次收到一个data就写入文件**

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

//把游标移动到文件尾部
[self.handler seekToEndOfFile];

//开始写入数据
[self.handler writeData:data];

self.fileLength += data.length;
}


在这里要关闭文件操作对象

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {

//关闭文件操作对象
[self.handler closeFile];
self.handler = nil;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: