使用动态 url 暂停和恢复从 CDN(内容分发网络)下载大文件

Posted

技术标签:

【中文标题】使用动态 url 暂停和恢复从 CDN(内容分发网络)下载大文件【英文标题】:Pause and Resume download of big files from CDN (content distribution network) with dynamic url 【发布时间】:2015-07-15 23:35:05 【问题描述】:

我正在使用此代码通过 AFNetworking 下载文件:

NSURLRequest *fileUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:@"url file"]];
NSURLSessionDownloadTask *downloadTask;

downloadTask = [self downloadTaskWithRequest:fileUrl 
                     progress:nil
                  destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) 
                       //Return destination path
           completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) 
                       //Unzipping file.. etc..                
          ];

//start and resume download
[downloadTask resume];

//pause download
[downloadTask suspend];

此代码在暂停和恢复下载时运行良好,但服务器已更改为使用 CDN,并且文件的 URL 现在是动态的。

AFNetworking 的下载可以使用动态网址吗?

谢谢。

【问题讨论】:

是的,它应该在内部处理。它会工作 我的错误,我忘了告诉CDN何时开始工作并且URL开始改变,我无法继续已经开始的下载,总是从头开始。 【参考方案1】:

我不能只使用 AFNetworking,而是根据需要添加 AFDownloadRequestOperation 库工作。

//Set download operation
AFDownloadRequestOperation *operation = [[AFDownloadRequestOperation alloc] initWithRequest:"requestURL"
                                                                                 targetPath:"toPath"
                                                                               shouldResume:YES];

//Success and Failure callbacks
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
    //completion
failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    //error
];

//to resume download
[operation resume];

//to pause download
[operation pause];

【讨论】:

以上是关于使用动态 url 暂停和恢复从 CDN(内容分发网络)下载大文件的主要内容,如果未能解决你的问题,请参考以下文章

CDN基本常识以及基础概念

CDN 说明

什么是CDN服务啊

DistributedCDN

[wiki]CDN

在 Web 应用程序 flex 中暂停和恢复下载