我一直在搜寻无济于事,并希望您对此有所帮助。
我尝试使用AFHTTPRequestOperation流(通过设置outputstream)下载图像。
它将下载文件,没问题。
但是进度条不会显示正确,因为totalBytesExpectedToRead始终返回-1,并且仅在下载完成后才返回正确的值。
这是流媒体的本质吗?
还是我做错了什么?
我的代码如下。
提前致谢!
(void)invokeAsynchronousSTREAMING:(NSString *)path locationToSave:(NSString *)locationToSave参数:(NSDictionary *)paramDict callId:(NSString *)callId {
NSMutableURLRequest *request = [[AFServerAPIClient sharedClient] requestWithMethod:@"GET"
path:path
parameters:paramDict];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
if(locationToSave!=nil) {
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:locationToSave append:NO];
}
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//DO SOMETHING
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//DO SOMETHING
}
];
[operation setDownloadProgressBlock:^(NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
NSLog(@"invokeAsyncronousSTREAMING - Received %lld of %lld bytes", totalBytesRead, totalBytesExpectedToRead);
//DO SOMETHING
}];
[operation start];
}//结束invokeAsyncStreaming
最佳答案
如果服务器未在响应中设置-1
HTTP header ,则下载进度可能会返回Content-Length
。
在这种情况下,建议您改用不确定的进度指示器。
关于xcode - setDownloadProgressBlock中的totalBytesExpectedToRead保持为-1,直到下载完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042925/