Latest 0.1.1
Homepage https://github.com/pozi119/VVFileTransfer
License MIT
Platforms ios 9.0
Dependencies AFNetworking
Authors

Version
License
Platform

功能

  • [x] 暂停,取消下载后,再次下载,可从上次进度继续
  • [x] App切至后台,可以继续下载
  • [x] App正常/非正常退出后,再次打开App可以继续上次进度
  • [x] 可变化下载地址续传(google cloud)
  • [x] 多文件同时下载
  • [x] 断点上传,切片上传(需服务器支持),未测试
  • [x] 文件切片处理工具

注意

如果在Capabilities中开启了Background Fetch,杀死App后还会继续下载,但再次开启App回重新下载.因为下载已经完成,或者恢复下载的数据已经发生了变化.

安装

VVFileTransfer 支持 CocoaPods. 请在Podfile中加入:

pod 'VVFileTransfer'

使用

下载:

        NSURLSessionDownloadTask *task = [[VVFileTransfer defaultTransfer] downloadTaskWithURL:url progress:^(NSProgress *downloadProgress) {
            dispatch_async(dispatch_get_main_queue(), ^{
                xxx.progressView.progress = downloadProgress.fractionCompleted;
            });
        } destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
            //这里要返回一个NSURL,其实就是文件的位置路径
            NSString * path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
            //使用建议的路径
            path = [path stringByAppendingPathComponent:response.suggestedFilename];
            NSLog(@"%@",path);
            return [NSURL fileURLWithPath:path];//转化为文件路径
        } completionHandler:^(NSURLResponse *response, NSURL * _Nullable filePath, NSError * _Nullable error) {
            if (!error) {
                NSLog(@"下载成功: %@", filePath);
            }else{
                NSLog(@"error: %@", error);
            }
        }]

文件处理:

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    path = [path stringByAppendingPathComponent:@"test.jpg"];
    VVFileHelper *helper = [[VVFileHelper alloc] initWithFileAtPath:path];
    helper.useStream = YES;
    [helper handleItem:^NSData *(NSData *sliceData) {
        // 此处可对文件进行分片加密等
        return sliceData;
    } sliceSize:32 * 1024 progress:^(NSProgress *progress) {
        self.progressView.progress = progress.fractionCompleted;
        NSLog(@"progress: %@", @(progress.fractionCompleted));
    } completion:^(NSString * _Nullable dstPath, NSError * _Nullable error) {
        NSLog(@"dstPath: %@nerror: %@", dstPath, error);
    }];

Author

pozi119, [email protected]

License

VVFileTransfer is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "VVFileTransfer",
    "version": "0.1.1",
    "summary": "A short description of VVFileTransfer.",
    "description": "TODO: Add long description of the pod here.",
    "homepage": "https://github.com/pozi119/VVFileTransfer",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "pozi119": "[email protected]"
    },
    "source": {
        "git": "https://github.com/pozi119/VVFileTransfer.git",
        "tag": "0.1.1"
    },
    "platforms": {
        "ios": "9.0"
    },
    "source_files": "VVFileTransfer/Classes/**/*",
    "dependencies": {
        "AFNetworking": []
    }
}

Pin It on Pinterest

Share This