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

iOS网络中下载文件之断点续传

2016-04-28 21:34 330 查看
FTP(文件传输协议的简称)(File Transfer Protocol、 FTP)客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。用户可以节省时间,提高速度-------转百度百科

以下载图片为例

代码搞起:

#import "ViewController.h"

@interface ViewController ()<NSURLConnectionDataDelegate>
//在sb 上搞一个imageView
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

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

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
NSLog(@"touchesBegan");

//断点续传

/**
什么时候用断点续传?
想要从指定位置下载文件,指定下载的文件长度.

只要设置了请求头的 Range 属性,就可以获取到指定位置的文件内容.
Range 格式:
bytes=x-y :从x位置开始,下载y个字节.
bytes=x-  :从x位置开始,下载完毕.  断点续传的.
bytes=-x  :从开始下载x个字节.
一旦 Range 属性设置成功,服务器返回的响应行中的状态码就会变成 206.
下载/显示图片,下载图片 1/3 的数据.
*/
NSString *urlString = @"http://d.hiphotos.baidu.com/image/pic/item/2e2eb9389b504fc2065e2bd2e1dde71191ef6de0.jpg";

NSURL *url = [NSURL URLWithString:urlString];

// 1.创建请求.
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

NSString *range = @"bytes=0-6000";
//通过请求头设置数据请求范围
[request setValue:range forHTTPHeaderField:@"Range"];

// 2.发送同步请求
NSURLResponse *response = nil;

// 同步下载图片数据.
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];

NSLog(@"response:%@",response);

// 展示图片
UIImage *image = [UIImage imageWithData:data];

NSLog(@"image:%@",image);

self.imageView.image = image;

// 图片: 想要展示不完整的图片数据,必须从0开始.

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: