现在的位置: 首页 > 综合 > 正文

IOS文件下载

2018年02月02日 ⁄ 综合 ⁄ 共 3111字 ⁄ 字号 评论关闭

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 

抱歉!评论已关闭.