iOS開發中利用AFNetworking下載大檔案以及下載檔案的刪除
在iOS開發的某些專案中有下載的功能,如視訊的下載,本篇部落格說的是利用AFNetworking進行下載。程式碼是我從網上找的,但網上的程式碼有一個問題,它將下載的視訊存放到了沙盒的Document檔案下,這樣是不對的。Document檔案不能存放大的檔案和下載的東西,我們需要將下載的大檔案存放到沙盒下的Library檔案下的Caches檔案下。直接上程式碼:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
// 1. 建立會話管理者
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
// 2. 建立下載路徑和請求物件
NSURL *URL = [NSURL URLWithString:@"http://dldir1.qq.com/qqfile/QQforMac/QQ_V5.4.0.dmg"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
// 3.建立下載任務
/**
* 第一個引數 - request:請求物件
* 第二個引數 - progress:下載進度block
* 其中: downloadProgress.completedUnitCount:已經完成的大小
* downloadProgress.totalUnitCount:檔案的總大小
* 第三個引數 - destination:自動完成檔案剪下操作
* 其中: 返回值:該檔案應該被剪下到哪裡
* targetPath:臨時路徑 tmp NSURL
* response:響應頭
* 第四個引數 - completionHandler:下載完成回撥
* 其中: filePath:真實路徑 == 第三個引數的返回值
* error:錯誤資訊
*/
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress *downloadProgress) {
__weak typeof(self) weakSelf = self;
// 獲取主執行緒,不然無法正確顯示進度。
NSOperationQueue* mainQueue = [NSOperationQueue mainQueue];
[mainQueue addOperationWithBlock:^{
// 下載進度
weakSelf.progressView.progress = 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount;
weakSelf.progressLabel.text = [NSString stringWithFormat:@"當前下載進度:%.2f%%",100.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount];
}];
} destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
// 檔案下載路徑 我們下載的大檔案如視訊應該放在沙盒的Library檔案下
NSString * caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString * filePathStr = [caches stringByAppendingString:@"/vv.dmg"];
NSURL * filePath = [NSURL URLWithString:filePathStr];
NSFileManager * fileManager = [NSFileManager defaultManager];
// 建立一個空的檔案
[fileManager createFileAtPath:filePathStr contents:nil attributes:nil];
// NSURL *path = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
// NSURL * filePath = [path URLByAppendingPathComponent:@"QQ_V5.4.0.dmg"];
return filePath;
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
NSString * fileStr = filePath.absoluteString;
NSLog(@"%@", fileStr);
_filePath = fileStr;
}];
// 4. 開啟下載任務
[downloadTask resume];
NSFileManager * fileManager = [NSFileManager defaultManager];
// 刪除檔案
[fileManager removeItemAtPath:_filePath error:nil];
本篇部落格到此結束,謝謝檢視!!!
相關文章
- iOS開發網路篇之檔案下載、大檔案下載、斷點下載iOS斷點
- 利用secure crt下傳下載檔案
- iOS開發中利用AFNetworking進行斷點下載iOS斷點
- thinkphp對檔案的上傳,刪除,下載操作PHP
- Web 開發中的檔案下載問題Web
- 利用tftp和nfs下載檔案到開發板FTPNFS
- 利用IhttpHandler實現檔案下載HTTP
- 【轉載】windows下刪除指定日期前的檔案Windows
- 檔案下載
- 如何在Macbook中檢視並刪除最近下載的檔案?Mac
- 00、下載檔案
- Ajax 下載檔案
- FastApi下載檔案ASTAPI
- MVC 下載檔案MVC
- js 檔案下載JS
- Servlet下載檔案Servlet
- httpWebRequest 檔案下載HTTPWeb
- php檔案下載PHP
- .net 檔案下載
- php 檔案下載PHP
- HttpClient 下載檔案HTTPclient
- Response下載檔案
- PHP開發之檔案的上傳下載PHP
- 精講RestTemplate第6篇-檔案上傳下載與大檔案流式下載REST
- windows 下刪除.svn檔案Windows
- Ubuntu IOS檔案映象下載網站UbuntuiOS網站
- 檔案程式設計、檔案下載程式設計
- 利用github給國外檔案下載加速Github
- Linux下批量刪除空檔案或者刪除指定大小的檔案Linux
- AFNetworking下載檔案型別直接在檔名後面加型別
- 大檔案斷點下載(NSURLConnection)斷點
- 下載檔案的ContentType
- Linux下刪除昨天的檔案Linux
- windows下刪除過期的檔案Windows
- Flutter 下載檔案操作Flutter
- SpringMVC檔案下載SpringMVC
- 【springmvc】下載檔案SpringMVC
- 使用PHP下載檔案PHP