网络编程---将网络上的大文件下载到本地,并打印其进度。

点击“開始传输”button。将网络上的大文件先下载下来,下载完毕后,保存到本地。

UI效果图例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjczNjQ0MzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="200" height="300" alt="">     
    

详细代码例如以下:

//  ViewController.m

//  0611---数据请求+滚动栏

#import "ViewController.h"

unsigned
long tempLength;

@interface
ViewController () <NSURLConnectionDataDelegate>

{

NSMutableData * resultData;

UISlider * _slider;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

[self
_loadView];

}

- (void) _loadView

{

self.view.backgroundColor=[UIColor
colorWithRed
green
blue
alpha:0.7];

UISlider  * slider=[[UISlider
,
, self.view.frame.size.width,
)];

slider.backgroundColor=[UIColor
colorWithRed:0.1
green:0.1
blue:0.7
alpha:0.2];

slider.;   
//设置最小值

slider.;   
//设置最大值

slider.;          
//设置起始值

slider.enabled=YES;

_slider=slider;

[self.view
addSubview:slider];

//    NSLog(@"%f",self.view.frame.size.width);     375

//    NSLog(@"%f",self.view.frame.size.height);    667

UIButton * button=[[UIButton
,
, , )];

button.center=self.view.center;

[button setTitle:@"開始传输"
forState:UIControlStateNormal];

[button setTitleColor:[UIColor
redColor] forState:UIControlStateNormal];

button.backgroundColor=[UIColor
colorWithRed:0.1
green:0.1
blue:0.1
alpha:0.4];

[button addTarget:self
action:@selector(startTransition)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview: button];

}

- (void)startTransition

{

NSLog(@"点击了button~");

//通过URL建立请求对象

NSURL * url=[NSURL
URLWithString:@"http://192.168.2.106/hahaha.zip"];

NSURLRequest * request=[NSURLRequest
requestWithURL:url];

//创建NSURLConnection
对象用来连接server而且发送请求

NSURLConnection * conn=[[NSURLConnection
alloc]initWithRequest:request
delegate:self];

[conn
start];

}

#pragma mark - 代理方法

//接受到响应

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

{

NSLog(@"-------%lu",(unsigned
long)response.expectedContentLength);

tempLength=(unsigned
long)response.expectedContentLength;

resultData =[NSMutableData
data];

}

//接收到数据

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

{

[resultData
appendData:data];

_slider.value=(float)resultData.length/(float)tempLength;

NSLog(@"%lu  *****  %f",(unsigned
long)resultData.length,_slider.value);

}

//结束下载

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

NSLog(@"下载结束,保存到本地文件");

//创建一个文件

NSFileManager * manager=[NSFileManager
defaultManager];

//用path保存路径

NSString * path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES)
firstObject];

path=[path stringByAppendingPathComponent:@"hahaha1.zip"];

NSLog(@"%@", path);

//在路径下创建文档并将数据写入文档

[manager createFileAtPath:path
contents:resultData
attributes:nil];

}

//请求失败

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError
*)error

{

NSLog(@"didFailWithError");

}

@end


须要注意的是。slider的值是两个数之比。要保证两个数是float类型。

网络编程---(数据请求+slider)将网络上的大文件下载到本地,并打印其进度的更多相关文章

  1. [C#网络编程系列]专题一:网络协议简介

    转自:http://www.cnblogs.com/zhili/archive/2012/08/11/NetWorkProgramming.html 因为这段时间都在研究C#网络编程的一些知识, 所以 ...

  2. 【TCP/IP网络编程】:01理解网络编程和套接字

    1.网络编程和套接字 网络编程与C语言中的printf函数和scanf函数以及文件的输入输出类似,本质上也是一种基于I/O的编程方法.之所以这么说,是因为网络编程大多是基于套接字(socket,网络数 ...

  3. 【原】iOS学习39网络之数据请求

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  4. iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

    前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...

  5. iOS网络之数据请求GET和POST

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  6. UNIX网络编程——揭开网络编程常见API的面纱【上】

    Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...

  7. 揭开网络编程常见API的面纱【上】

    Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...

  8. linux网络编程基础--(转自网络)

    转自 http://www.cnblogs.com/MyLove-Summer/p/5215287.html Linux下的网络编程指的是socket套接字编程,入门比较简单. 1. socket套接 ...

  9. Python网络编程(OSI模型、网络协议、TCP)

    前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...

随机推荐

  1. Easyui的combobox组件无法选择内容

    我切换combobox的内容的时候,老是选中的是第一行的数据,因为我渲染的时候没有给它valueField和textField的字段,而默认的又不是我要求的. 加上就好了. $("#tool ...

  2. 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧

        通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...

  3. Javascript 类数组(Array-like)对象

    Javascript中的类数组对象(Array-like object)指的是一些看起来像数组但又不是数组的对象.Javascript中的arguments变量.document.getElement ...

  4. ecshop 商店设置,新增或者修改字段

    当想要新增选项到ecshop的商店设置时, 第一步:在ecs_shop_config这个表增加一条设置项记录 parent_id.code.type.value type 会有 group text  ...

  5. impress.js学习总结

    impress.js是一个很有趣的用来替代PPT的展示用的js工具,它的灵感来自prezi 如果你要学习使用它,这里有很好的演示模板 使用它的第一步,下载 impress.js,引入到你的代码里,并执 ...

  6. Java常量和变量

    1.Java运行原理 编译+解释型语言: 程序代码经编译后转换为一种称为java字节码(.class文件)的中间语言 file.java--->Class.class java虚拟机JVM将字节 ...

  7. Ubuntu使用Xming和Putty

    运行个复杂的,比如 gnome-session,这个是 GNOME 的启动命令,如果想打开 KDE 就是 startkde root@carlo-cloud:~# xlogoThe program ' ...

  8. iOS的launch image --备用

    当我们打开一款应用程序的时候,首先映入眼帘的往往并不是程序的主界面,而是经过精心设计的欢迎界面,这个界面通常会停留几秒钟,然后消失.看似很平常的一个小小的欢迎界面,其实还大有讲究. 一.为什么会出现欢 ...

  9. git 基本命令 (常用)

    http://www.zhixing123.cn/ubuntu/37865.html 参考的这个网址 他这里有个错误:id_rsa.pub 应该复制这个 而不是id_rsa  1341  git in ...

  10. [BZOJ 1055] [HAOI2008] 玩具取名 【记忆化搜索】

    题目链接:BZOJ - 1055 题目分析 这种类似区间 DP 的记忆化搜索都是很相近的,比如字符串压缩和字符串扩展都差不多. 都是将现在 Solve 的区间分成子区间,再求解子区间. 这道题 Sol ...