iOS之網上下載資料的兩種方式
//
// ViewController.m
// 檔案下載
//
// Created by zj on 16/5/17.
// Copyright © 2016年 zj. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<NSURLSessionDownloadDelegate>
@end
@implementation ViewController
使用前記得在info.plist裡面匯入網路協議
在此我使用的url是我本地的伺服器 大家可以使用網上的介面下載嘗試
/*
使用block方式下載資料 適合下載小檔案 不能監聽下載過程
- (void)viewDidLoad {
[super viewDidLoad];
NSString *str = @"http://127.0.0.1/設計模式解析.pdf";
str = [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:str];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLSession *session = [NSURLSession sharedSession];
建立下載會話任務
NSURLSessionDownloadTask *downLoadTask = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
拼接檔案路徑,用來存放我們下載好的檔案
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:response.suggestedFilename];
將返回的location轉化成路徑格式
NSString *temPath = [location path];
準備二進位制資料
NSData *data = [NSData dataWithContentsOfFile:temPath];
建立檔案處理物件
NSFileManager *fileManage = [NSFileManager defaultManager];
把下載好的檔案寫入到我們準備好的地址裡去
[fileManage createFileAtPath:path contents:data attributes:nil];
}];
開始下載任務
[downLoadTask resume];
}
*/
-(void)viewDidLoad{
[super viewDidLoad];
//使用代理方式來下載檔案 一般用來下載大一點的檔案 可以監聽下載過程
NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/Office4mac.dmg"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]] ;
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request];
[downloadTask resume];
}
//監聽下載的代理方法
//下載完成時呼叫
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location{
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"user.mmm"];
NSString *temPath = [location path];
NSData *data = [NSData dataWithContentsOfFile:temPath];
NSFileManager *fileManage = [NSFileManager defaultManager];
[fileManage createFileAtPath:path contents:data attributes:nil];
}
//下載過程呼叫
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
didWriteData:(int64_t)bytesWritten
totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
NSLog(@"這次共下載=%lld 當前下載總數= %lld 期待下載的總數%lld",bytesWritten,totalBytesWritten,totalBytesExpectedToWrite);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
相關文章
- 兩種啟動資料庫的方式資料庫
- iOS儲存資料的4種方式iOS
- IOS檢測晃動的兩種方式iOS
- IOS資料儲存常用的5種方式iOS
- tensorflow載入資料的三種方式
- 連線MySQL資料庫的兩種方式介紹MySql資料庫
- iOS開發資料儲存篇—iOS中的幾種資料儲存方式iOS
- iOS之視訊的三種播放方式iOS
- 國產化之 .NET Core 操作達夢資料庫DM8的兩種方式資料庫
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- 資料結構線性表兩種方式分享資料結構
- iOS應用資料儲存的幾種常用方式iOS
- iOS App中可拆卸一個framework的兩種方式iOSAPPFramework
- ABAP和XML資料格式互相轉換的兩種方式XML
- Python訪問Oracle的兩種資料獲取方式PythonOracle
- Oracle資料庫伺服器的兩種連線方式Oracle資料庫伺服器
- WPF/C#:顯示分組資料的兩種方式C#
- axios(xhr) 和 fetch 兩種請求方式iOS
- python連線clickhouse資料庫的兩種方式小結Python資料庫
- 計算機硬體有兩種儲存資料的方式計算機
- Spring框架訪問資料庫的兩種方式的小案例Spring框架資料庫
- ChatTTS的兩種使用方式TTS
- 2、Spring4之Bean的兩種配置方式SpringBean
- [轉載]HTTP四種常見的POST提交資料方式HTTP
- 用 Python 載入資料的 5 種不同方式Python
- Nagios 快速實現資料視覺化的幾種方式iOS視覺化
- 兩種資料消費方式:pull與push,陰與陽
- Python 爬取網頁資料的兩種方法Python網頁
- JS 垃圾回收的兩種方式JS
- Docker打包映象的兩種方式Docker
- sparkrdd轉dataframe的兩種方式Spark
- 提交Application的兩種方式APP
- 建立Session物件的兩種方式Session物件
- [MySQL光速入門]022 插入資料的兩種方式(番外)MySql
- Laravel指東:使用模型建立 uuid 主鍵資料的兩種方式Laravel模型UI
- angular學習筆記(三)-檢視繫結資料的兩種方式Angular筆記
- Android提交資料到伺服器的兩種方式四種方法Android伺服器
- Linux下配置網路引數常用的兩種方式!Linux