美文网首页
NSURLConnection小文件下载写入沙盒

NSURLConnection小文件下载写入沙盒

作者: solozyx | 来源:发表于2016-08-07 14:08 被阅读14次

使用delegate的方式:

@interface ViewController () <NSURLConnectionDataDelegate>
/** 文件数据 */
@property (nonatomic, strong) NSMutableData *fileData;
/** 文件的总长度 */
@property (nonatomic, assign) NSInteger contentLength;
@end

<NSURLConnectionDataDelegate>相关代理方法实现:

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSURL *url = [NSURL URLWithString:@"http://www.example.com:8080/resources/videos/minion_15.mp4"];
    [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
}

#pragma mark - <NSURLConnectionDataDelegate>
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response{
    self.contentLength = [response.allHeaderFields[@"Content-Length"] integerValue];
    self.fileData = [NSMutableData data];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [self.fileData appendData:data];
    CGFloat progress = 1.0 * self.fileData.length / self.contentLength;
    NSLog(@"已下载:%.2f%%", (progress) * 100);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSLog(@"下载完毕");
    // 将文件写入沙盒中
    // 缓存文件夹
    NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    // 文件路径
    NSString *file = [caches stringByAppendingPathComponent:@"box_minion_15.mp4"];
    NSLog(@"%@",file);
    // 写入数据
    [self.fileData writeToFile:file atomically:YES];
    self.fileData = nil;
}

如果要下载的文件足够小:

- (void)dataDownlaod{
    NSURL *url = [NSURL URLWithString:@"http://www.example.com:8080/resources/images/minion_15.png"];
    NSData *data = [NSData dataWithContentsOfURL:url];
    NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSString *file = [caches stringByAppendingPathComponent:@"box_minion_15.png"];
    [data writeToFile:file atomically:YES];
}

相关文章

  • NSURLConnection小文件下载写入沙盒

    使用delegate的方式: 相关代理方法实现: 如果要...

  • iOS文件下载

    小文件下载 方式一,使用NSData 方式二,使用NSURLConnection 小文件下载的缺点:没法知道下载进...

  • 沙盒

    沙盒 简单对象写入文件 NSFileManager 文件管理者 复杂对象写入沙盒

  • iOS 沙盒文件增删

    图片 写入 沙盒 删除沙盒里的文件 向沙盒里 写入文件夹,并向文件夹里 写入东西 得到沙盒文件夹 下的所有文件 来...

  • iOS网络编程--文件下载

    使用NSURLConnection实现下载 1. 小文件下载 第一种方式(NSData) 第二种方式(NSURLC...

  • NSURLConnection实现小文件的下载

    1.简单的实现小文件的下载 NSURL *url = [NSURL URLWithString:@"文件下载地址"...

  • 沙盒简单写入

    // 字符串写入 字符串需要UTF8 转码 //存储路径 NSString*documentPathStr = [...

  • 沙盒(自我认识)

    沙盒是用来存入缓冲区的,APP关掉,缓存被自动清理。 可以写入沙盒的有字符串 数组(最简单的数组,复杂的写入不了(...

  • NSURLConnection下载文件(断点下载)

    1.小文件的下载 由于文件较小,我们可以直接可以使用NSURLConnection的异步请求(默认在这里开了一条线...

  • 图片下载缓存思路

    自定义NSOperation下载图片思路 – 无沙盒缓存 自定义NSOperation下载图片思路 – 有沙盒缓存

网友评论

      本文标题:NSURLConnection小文件下载写入沙盒

      本文链接:https://www.haomeiwen.com/subject/tejlsttx.html