iOS文件下载
iOS</span>开发中会经常用到文件上传下载的功能,这篇文件将介绍一下如何结合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
</span>