IOS网络编程—(数据请求+slider)将网络上的大文件下载到本地,并打印其进度详解手机开发

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

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

UI效果图如下:

IOS网络编程---(数据请求+slider)将网络上的大文件下载到本地,并打印其进度详解手机开发          IOS网络编程---(数据请求+slider)将网络上的大文件下载到本地,并打印其进度详解手机开发

具体代码如下:

//  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:1 blue:1 alpha:0.7];

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

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

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

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

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

    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(, , 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:@”http://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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/3368.html

(0)
上一篇 2021年7月16日 14:29
下一篇 2021年7月16日 14:29

相关推荐

发表回复

登录后才能评论