ios网络学习------11 原生API文件上传之断点续传思路
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmcyMDA5MzAzNTEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad
{
[super viewDidLoad];
//下载文件
[self download];
} -(void)download
{
//1. NSURL
NSURL *url = [NSURL URLWithString:@"http://loacal/~apple/itcase/download/iTunesConnect_DeveloperGuide_CN.zip"];
//2NSRequest
//要推断网络server上文件的大小。能够使用Http的HEAD方法
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //使用HEAD方法。仅获取目标文件的信息,而不做实际的下载工作。 //[request setHTTPMethod:@"HEAD"];
/**
设置断点续传的思路:
HeaderField:头域(请求头部的字段)
能够通过指定range的范围逐步地下载指定范围内的数据,待下载完毕后,再将这些数据拼接成一个文件。 1依据HEAD方法获取到要下载的文件的总大小、
2在磁盘上建立一个暂时的缓冲文件。该文件的大小与目标文件大小一致
3缓冲文件里全部字节都是默觉得0
4开启多线程。分别载入不同的range头指定的数据块。待数据块载入完毕以后,将其分别写入相应的偏移地址。
5全部数据下载完毕以后。表示文件下载完毕。将暂时文件名称更改为目标文件。 开发的难点:
0 在写入文件之前,首先要建立一个同等大小的文件。
1 文件的读写问题,在oc里默认是覆盖,追加,假设要指定位置,须要用seek方法,移动文件指针。
2在多线程写入文件时。文件的锁定操作是一个问题。
*/
[request setValue:@"bytes=0-499" forKeyPath:@"range"];//表示仅仅读取数据的第0个字节到第499个字节。 //3NSURLConnection
//假设要获取文件长度。能够在Response中获取到
NSURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//在response的expectedcontentlength属性中,能够获知要卸载的文件的文件长度。
NSLog(@"%lld %d%@", [response expectedContentLength], data.length, data); }
@end
ios网络学习------11 原生API文件上传之断点续传思路的更多相关文章
- ios网络学习------10 原生API文件上传
使用原生态的api上传文件的实现: #import "MainViewController.h" @interface MainViewController () @propert ...
- iOS开发之网络编程--使用NSURLConnection实现文件上传
前言:使用NSURLConnection实现文件上传有点繁琐. 本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...
- JavaScrip 原生多文件上传及预览 兼容多浏览器
JavaScrip 原生多文件上传及预览 兼容多浏览器 html代码块 <div class="container"> <label>请选择一个图像文件:& ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- 学习Struts--Chap07:Struts2文件上传和下载
1.struts2文件上传 1.1.struts2文件上传的基本概述 在开发web应用的时候,我们一般会为用户提供文件上传的功能,比如用户上传一张图像作为头像等.为了能上传文件,我们必须将表单的met ...
- 【SFTP】使用Jsch实现Sftp文件上传-支持断点续传和进程监控
JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...
- 4GB以上超大文件上传和断点续传服务器的实现
随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上传和断点续传的开发经验,往往在网上找一些简单的 ...
- FTP文件上传 支持断点续传 并 打印下载进度(二) —— 单线程实现
这个就看代码,哈哈哈哈哈 需要用到的jar包是: <dependency> <groupId>commons-net</groupId> <artifact ...
- Asp.Net Core 3.0 学习3、Web Api 文件上传 Ajax请求以及跨域问题
1.创建Api项目 我用的是VS2019 Core3.1 .打开Vs2019 创建Asp.Net Core Web应用程序命名CoreWebApi 创建选择API 在Controller文件夹下面添加 ...
随机推荐
- 习水医院12C RAC 数据库安装文档
环境介绍 OS: Oracle Enterprise Linux 6.4 (For RAC Nodes) DB: GI and Database 12.1.0.2 所需介质 p17694377 ...
- Jmeter之定时器
转自:https://www.cnblogs.com/imyalost/p/6004678.html 一.定时器的作用域 1.定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位 ...
- bash - GNU Bourne-Again SHell
概述(SYNOPSIS) bash [options] [file] 版权所有(COPYRIGHT) Bash is Copyright (C) 1989-2002 by the Free Softw ...
- centos7 安装后,意外出现Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]
安装完成centos7后出现如下提示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License informat ...
- ssd运行过程中遇到的bug
1.出现以下错误: 没有添加环境变量: https://github.com/weiliu89/caffe/issues/4 可以看到当前PYTHONPATH不再ssd1里面,所以需要修改,修改之后就 ...
- ansible API(开发应用)
7. ansible API(开发应用) 官网链接
- python3+beautifulSoup4.6抓取某网站小说(二)基础功能设计
本章学习内容:1.网页编码还原读取2.功能设计 stuep1:网页编码还原读取 本次抓取对象: http://www.cuiweijuxs.com/jingpinxiaoshuo/ 按照第一篇的代码来 ...
- RNN,LSTM,GRU基本原理的个人理解
记录一下对RNN,LSTM,GRU基本原理(正向过程以及简单的反向过程)的个人理解 RNN Recurrent Neural Networks,循环神经网络 (注意区别于recursive neura ...
- Oracle存储过程和程序包
一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...
- 51nod 1175 区间第k大 整体二分
题意: 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,第K大的数是多少. 分析: 仅仅就是一道整体二分的入门题而已,没听说过整体二分? 其实就是一个分治的函数 ...