李洪强iOS开发之下载
Posted 李洪强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了李洪强iOS开发之下载相关的知识,希望对你有一定的参考价值。
//
//
// LHQDownLoader.m
// A21 - 李洪强 - 下载
//
// Created by vic fan on 16/7/3.
// Copyright © 2016年 李洪强. All rights reserved.
//
#import "LHQDownLoader.h"
@interface LHQDownLoader ()<NSURLSessionDataDelegate>
@end
@implementation LHQDownLoader
- (void)download: (NSString *)strUrl{
//构造secssion
// NSURLSession *secssion = [NSURLSession sharedSession];
NSURLSessionConfiguration *cfg = [ NSURLSessionConfiguration defaultSessionConfiguration
];
// 1. 得到 session 对象
NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];
//2 创建一个下载task
strUrl = [strUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:strUrl];
NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
}];
//3 开始任务
[task resume];
}
//注意:
//NSURLSessionDownloadTask下载完成之后,将数据保存在沙盒里面的tmp临时文件中,需要将临时文件 将临时文件剪切或者复制 Caches 文件夹。
#pragma mark - NSURLSessionDownloadDelegate
/**
下载完成
* @param location 临时文件的路径(下载好的文件)
*/
- ( void )URLSession:( NSURLSession *)session downloadTask:( NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:( NSURL*)location
{
// location : 临时文件的路径(下载好的文件)
// NSString *caches = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) lastObject
// ];
NSString *url = [NSString stringWithFormat:@"/Users/0426ios/Desktop/test/aabbcc.mp4"];
// [filehandle writeData:downloadTask];
// response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致
NSString *file = [url stringByAppendingPathComponent :downloadTask. response . suggestedFilename
];
// 将临时文件剪切或者复制 Caches 文件夹
//判断下载的文件是否存在
NSFileManager *mgr = [ NSFileManager defaultManager];
if(![mgr fileExistsAtPath:url]){
//文件不存在
[mgr createFileAtPath:url contents:nil attributes:nil];
}else{
//文件存在
NSFileHandle *filehandle = [NSFileHandle fileHandleForUpdatingAtPath:url];
//在文件的末尾追加数据
[filehandle seekToEndOfFile];
[mgr moveItemAtPath :location. path toPath :file error : nil
];
[filehandle closeFile];
}
// AtPath : 剪切前的文件路径
// ToPath : 剪切后的文件路径
}
/**
恢复下载时调用
*/
- ( void )URLSession:( NSURLSession *)session downloadTask:( NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:( int64_t )fileOffset expectedTotalBytes:( int64_t)expectedTotalBytes
{
}
/**
正在下载
@param bytesWritten 这次调用写了多少
* @param totalBytesWritten 累计写了多少长度到沙盒中了
* @param totalBytesExpectedToWrite 文件的总长度
*/
- ( void )URLSession:( NSURLSession *)session downloadTask:( NSURLSessionDownloadTask *)downloadTask didWriteData:( int64_t )bytesWritten totalBytesWritten:( int64_t )totalBytesWritten totalBytesExpectedToWrite:( int64_t)totalBytesExpectedToWrite
{
double progress = ( double )totalBytesWritten / totalBytesExpectedToWrite;
NSLog ( @" 下载进度 ---%f", progress);
//判断文件是否存在
}
@end
以上是关于李洪强iOS开发之下载的主要内容,如果未能解决你的问题,请参考以下文章