IOS文件下载

来源:互联网 发布:剑网三魔君捏脸数据 编辑:程序博客网 时间:2024/05/06 08:16

iOS开发中会经常用到文件上传下载的功能,这篇文件将介绍一下如何结合asp.net webservice实现文件上传下载。 
首先,让我们看下文件下载。

这里我们下载cnblogs上的一个zip文件。使用NSURLRequest+NSURLConnection可以很方便的实现这个功能。在asp.net webservice中可以将文件的地址返回到iOS系统,iOS系统再通过这个url去请求下载该文件。这里为了简单起见,直接将url写道代码里面了。我们可以使用两种方式去下载文件。

1、同步下载文件:

NSString *urlAsString = @"http://files.cnblogs.com/zhuqil/UIWebViewDemo.zip";         NSURL    *url = [NSURL URLWithString:urlAsString];         NSURLRequest *request = [NSURLRequest requestWithURL:url];         NSError *error = nil;         NSData   *data = http://www.cnblogs.com/zhwl/archive/2012/07/13/[NSURLConnection sendSynchronousRequest:request                                                returningResponse:nil                                                            error:&error];         /* 下载的数据 */         if (data != nil){             NSLog(@"下载成功");             if ([data writeToFile:@"UIWebViewDemo.zip" atomically:YES]) {                 NSLog(@"保存成功.");             }             else             {                 NSLog(@"保存失败.");             }         } else {             NSLog(@"%@", error);         } 


2.异步下载

DownLoadingViewController.h//  DownLoadingViewController.h //  DownLoading // //  Created by skylin zhu on 11-7-30. //  Copyright 2011年 mysoft. All rights reserved. // #import @interface DownLoadingViewController : UIViewController {     NSURLConnection *connection;      NSMutableData *connectionData; } @property (nonatomic,retain) NSURLConnection *connection;   @property (nonatomic,retain) NSMutableData *connectionData; @end DownLoadingViewController.m//  DownLoadingViewController.m //  DownLoading // //  Created by skylin zhu on 11-7-30. //  Copyright 2011年 mysoft. All rights reserved. // #import "DownLoadingViewController.h" @implementation DownLoadingViewController @synthesize connection,connectionData; - (void)dealloc {     [super dealloc]; } - (void)didReceiveMemoryWarning {     // Releases the view if it doesn't have a superview.     [super didReceiveMemoryWarning];         // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad {     [super viewDidLoad];     //文件地址     NSString *urlAsString = @"http://files.cnblogs.com/zhuqil/UIWebViewDemo.zip";     NSURL    *url = [NSURL URLWithString:urlAsString];     NSURLRequest *request = [NSURLRequest requestWithURL:url];     NSMutableData *data = http://www.cnblogs.com/zhwl/archive/2012/07/13/[[NSMutableData alloc] init];     self.connectionData = http://www.cnblogs.com/zhwl/archive/2012/07/13/data;     [data release];     NSURLConnection *newConnection = [[NSURLConnection alloc]                                       initWithRequest:request                                       delegate:self                                       startImmediately:YES];     self.connection = newConnection;     [newConnection release];     if (self.connection != nil){        NSLog(@"Successfully created the connection");     } else {         NSLog(@"Could not create the connection");     } } - (void) connection:(NSURLConnection *)connection             didFailWithError:(NSError *)error{     NSLog(@"An error happened");     NSLog(@"%@", error); } - (void) connection:(NSURLConnection *)connection               didReceiveData:(NSData *)data{     NSLog(@"Received data");     [self.connectionData appendData:data]; } - (void) connectionDidFinishLoading :(NSURLConnection *)connection{     /* 下载的数据 */         NSLog(@"下载成功");         if ([self.connectionData writeToFile:@"UIWebViewDemo.zip" atomically:YES]) {             NSLog(@"保存成功.");         }         else         {             NSLog(@"保存失败.");         }       /* do something with the data here */ } - (void) connection:(NSURLConnection *)connection           didReceiveResponse:(NSURLResponse *)response{     [self.connectionData setLength:0]; } - (void) viewDidUnload{     [super viewDidUnload];     [self.connection cancel];     self.connection = nil;     self.connectionData = http://www.cnblogs.com/zhwl/archive/2012/07/13/nil; } @end