NSURLSession 断点下载

本文介绍了一个简单的断点续传功能实现方案,通过ResumeManager类管理文件的下载过程,支持暂停、继续及取消下载等功能,并展示了如何在iOS应用中集成这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用方法

导入头文件#import"ResumeManager.h" 就可以使用

点击下载demo 

demo实现片段

//
//  ViewController.m
//  Test断点下载
//
//  Created by 泰吉通 on 16/12/12.
//  Copyright © 2016年 泰吉通. All rights reserved.
//

#import "ViewController.h"
#import "ResumeManager.h"

@interface ViewController ()

@property (nonatomic, strong) ResumeManager *manager;

@property (nonatomic, weak) IBOutlet UIImageView *imageWithBlock;
@property (nonatomic, copy) NSString *targetPath;

@property (nonatomic, weak) IBOutlet UIProgressView *progressView;
@property (nonatomic, weak) IBOutlet UILabel *lab;
@property (nonatomic, weak) IBOutlet UIButton *deleteBtn;


/**
 *  简单请求
 *
 *  @param sender 继续下载
 */
-(IBAction)simpleRequest:(id)sender;

/**
 *  取消请求
 *
 *  @param sender 取消
 */
-(IBAction)cancelRequest:(id)sender;

/**
 *  删除文件
 *
 *  @param sender 删除
 */
-(IBAction)deleteImage:(id)sender;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
}

/**
 *  简单请求
 *  @param sender 继续
 */
-(IBAction)simpleRequest:(id)sender{
    
    //1.准备
    if (self.manager) {
        
        [self cancelRequest:nil];
    }
    
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目录
    self.targetPath = [documentsDirectory stringByAppendingPathComponent:@"mey.png"];
    NSLog(@"%@",self.targetPath);
    
    NSURL *url = [NSURL URLWithString:@"https://s3-ap-southeast-1.amazonaws.com/taijietong/1.png"];
    
    self.manager = [ResumeManager resumeManagerWithURL:url targetPath:self.targetPath success:^{
        
        NSLog(@"success");
        self.imageWithBlock.image = [UIImage imageWithContentsOfFile:self.targetPath];
        self.deleteBtn.hidden = NO;
        
    } failure:^(NSError *error) {
        
        NSLog(@"failure");
        
    } progress:^(long long totalReceivedContentLength, long long totalContentLength) {
        
        float percent = 1.0 * totalReceivedContentLength / totalContentLength;
        NSString *strPersent = [[NSString alloc]initWithFormat:@"%.f", percent *100];
        self.progressView.progress = percent;
        self.lab.text = [NSString stringWithFormat:@"已下载%@%%", strPersent];
    }];
    
    //2.启动
    [self.manager start];
    
}

/**
 *  取消请求
 *  @param sender 取消
 */
-(IBAction)cancelRequest:(id)sender{
    
    [self.manager cancel];
    self.manager = nil;
}

/**
 *  删除文件
 *
 *  @param sender 删除
 */
-(IBAction)deleteImage:(id)sender{
    
    NSFileManager *manager = [NSFileManager defaultManager];
    NSError *error = nil;
    [manager removeItemAtPath:self.targetPath error:&error];
    
    if (error == nil) {
        
        self.imageWithBlock.image = [UIImage imageWithContentsOfFile:self.targetPath];
        self.progressView.progress = 0;
        self.lab.text = nil;
        
        self.deleteBtn.hidden = YES;
    }
    
}


@end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值