IOS文件下载

简介: IOS文件下载

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 
相关文章
|
iOS开发
iOS开发网络篇—文件下载(一·不合理)
iOS开发网络篇—文件下载(一·不合理) 一、小文件下载 如果文件比较小,下载方式会比较多 直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url; 利⽤NSURLConnection发送一个HTTP请求去下载 如果是下载图片,还可以利用SDWebImage框架  二、沙盒   1.在finder中,系统的一些文件(资源库)是隐藏的,可以通过在终端运行下图的代码,显示隐藏的文件。
1166 0
|
2月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
19天前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
111 66
|
6天前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
|
30天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。