网络编程---(数据请求+slider)将网络上的大文件下载到本地,并打印其进度
网络编程---将网络上的大文件下载到本地,并打印其进度。
点击“開始传输”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)将网络上的大文件下载到本地,并打印其进度的更多相关文章
- [C#网络编程系列]专题一:网络协议简介
转自:http://www.cnblogs.com/zhili/archive/2012/08/11/NetWorkProgramming.html 因为这段时间都在研究C#网络编程的一些知识, 所以 ...
- 【TCP/IP网络编程】:01理解网络编程和套接字
1.网络编程和套接字 网络编程与C语言中的printf函数和scanf函数以及文件的输入输出类似,本质上也是一种基于I/O的编程方法.之所以这么说,是因为网络编程大多是基于套接字(socket,网络数 ...
- 【原】iOS学习39网络之数据请求
1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...
- iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传
前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...
- iOS网络之数据请求GET和POST
1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...
- UNIX网络编程——揭开网络编程常见API的面纱【上】
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...
- 揭开网络编程常见API的面纱【上】
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...
- linux网络编程基础--(转自网络)
转自 http://www.cnblogs.com/MyLove-Summer/p/5215287.html Linux下的网络编程指的是socket套接字编程,入门比较简单. 1. socket套接 ...
- Python网络编程(OSI模型、网络协议、TCP)
前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...
随机推荐
- laravel4通过控制视图模板路劲来动态切换主题
通过控制视图模板路劲来动态切换主题 App::before(function($request) { $paths = Terminal::isMobile() ? array(__dir__.'/v ...
- 《gzip命令》-linux命令五分钟系列之七
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
- PHP面向对象(OOP):把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ...
- 面试小结(java基础)
一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?带着这个疑惑,动手建几个测试类, 揭开心中的疑惑.以下是解开疑惑过程: package test;/** * 一个.java源文件中可以 ...
- javascript深入理解js闭包[转]
一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...
- Python--模块微谈
一个.py文件是一个模块,模块里面可以定义很多函数,载入模块就可以使用函数.模块又有python内置模块,又有第三方模块,不同模块里可以有相同的函数名和变量名,模块又可以组织到package里,不同的 ...
- 如何自定义RecycleView item的间距
引言 在以前使用ListView和GridView时,设置item之间的间距还是相对比较简单的,因为它们的基本属性里面Android已经定义好了,可以直接设置属性值即可.但Google为了通用性和灵活 ...
- OC 之 谓词
NSPredicate 分类: Objective-C iOS XCode Mac2012-10-26 17:26 10557人阅读 评论(1) 收藏 举报 简述:Cocoa框架中的NSPredica ...
- NET笔试题集
题目来源于传智播客和各大互联网,复习.重新整理贴出来. 1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 ...
- C#后台找不到前台html标签
没关系! 只要他在form表单里 , 咱在标签加上一个 runat="server"就可以在后台cs代码里找到他了