每个 url 的 downloadTaskWithRequest 都没有进展

No progression with downloadTaskWithRequest for every url

我正在使用 downloadTaskWithRequest 下载一些文件,我正在使用 KVO 来观察进度。

这是我的代码:

// create the request from an url
NSMutableURLRequest *request = [mySession.requestSerializer requestWithMethod:@"GET" URLString:url parameters:nil error:&serializationError];

NSProgress *localProgress = nil;

NSURLSessionDownloadTask *downloadTask = [mySession downloadTaskWithRequest:request 
    progress:localProgress
    destination:^NSURL *(NSURL *targetPath, NSURLResponse *response)
    { ... }
    completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error)
    { ... }];

下载文件完美无缺,但为什么有些情况下我可以跟随进度,而有些情况下进度永远不会更新?

url 进展顺利: url = @"http://www.fond-ecran-hd.net/pc-driver/1351.jpg";

url 没有进展: url = @"http://lorempixel.com/1920/1920/";

我知道工作案例和非工作案例之间的区别是一些 url 直接 link 到文件 (/path/file.ext) 而不是其他的。 但我想知道为什么,如果有解决方法...

我从 URL 获得的 HTTP 响应 object 必须包含一个名为 Content-Length 的 header,它将给出文件的长度!

如果服务器没有return这个,似乎无法跟踪下载进度。