下载文件时,我希望能够恢复下载。例如:
NSFileManager *fm = [NSFileManager defaultManager];
NSString *downloadTempPath = [_tempPath path];
if ([fm fileExistsAtPath:downloadTempPath]) {
// We have a partial download. Get the rest of the file starting at byteCount
NSDictionary *dAttrib = [fm attributesOfItemAtPath:downloadTempPath error:nil];
NSUInteger byteCount = [dAttrib fileSize];
NSLog(@"Preparing to resume download: %@", downloadTempPath);
NSString *requestRange = [NSString stringWithFormat:@"bytes=%d-", byteCount];
[self.request setValue:requestRange forHTTPHeaderField:@"Range"];
}
这将产生一个带有如下标头的 get 请求:
范围:字节=1000-
我希望第一个 206 响应给我一个我要求它开始的块,有一个像这样的标题和值(从 转储allHeaderFields
):
“内容范围”=“字节 1000-340197/340198”;
但有时它会跳到前面并返回如下内容:
“内容范围”=“字节 32000-340197/340198”;
这真的很糟糕,因为我需要从 1000 到 32000 的那些字节,但它并没有给我。
我知道没有服务器错误,因为当我卷曲到服务器时,它会返回我要求的部分。另外,当我使用wireshark 时,我看不到任何数据包进入服务器。所以这是 iOS 端的问题,可能与NSURLCache