频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
网络编程---(数据请求+slider)将网络上的大文件下载到本地,并打印其进度
2015-06-12 11:06:18      个评论    来源:人生得意须尽欢,做一个快乐的程序猿~~~  
收藏   我要投稿

 

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

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


 

UI效果图如下:

\ \

 

具体代码如下:

 

// ViewController.m

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

 

 

#import "ViewController.h"

 

unsigned long tempLength;

 

@interface ViewController ()

{

NSMutableData * resultData;

UISlider * _slider;

}

 

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

[super viewDidLoad];

 

[self _loadView];

}

 

- (void) _loadView

{

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

UISlider * slider=[[UISlider alloc]initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, 40)];

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

slider.minimumValue=0; //设置最小值

slider.maximumValue=1; //设置最大值

slider.value=0; //设置起始值

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 alloc]initWithFrame:CGRectMake(0, 0, 120, 50)];

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(@"点击了按钮~");

//通过URL建立请求对象

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

NSURLRequest * request=[NSURLRequest requestWithURL:url];

 

 

//创建NSURLConnection 对象用来连接服务器并且发送请求

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类型。
点击复制链接 与好友分享!回本站首页
上一篇:模板类里的friend方法
下一篇:横向滑动的listview效果的实现方法,scrollview嵌套水平滑动的listview卡顿的解决方法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站