【发布时间】:2014-02-28 06:28:48
【问题描述】:
服务器中有一个图像文件。我想知道图像的大小而不从服务器下载它。
【问题讨论】:
-
您需要向 URL 发出
HEAD类型的请求,并从响应标头中读取Content-Length键值。检查this answer
服务器中有一个图像文件。我想知道图像的大小而不从服务器下载它。
【问题讨论】:
HEAD 类型的请求,并从响应标头中读取 Content-Length 键值。检查this answer
您需要执行 HEAD 请求而不是 GET 请求。然后您将检查 Content-Length 以获取大小。
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"HEAD"];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"Size: %@", [[httpResponse allHeaderFields] objectForKey:@"Content-Length"]);
}];
请注意,[[response allHeaderFields] objectForKey:@"Content-Length"] 将返回 NSNumber 或 NSString,而不是原语(我不确定哪个,您必须对其进行测试,或者其他人可以对此发表评论)。
更新
[response expectedContentLength] 是在您提出请求后获取内容长度的更简单方法。而那个返回一个long long,而不是一个NSNumber或NSString。
【讨论】:
使用 NSMutableURLRequest 发送请求和 In Delegate 方法
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
long expectedlength=[response expectedContentLength];
}
我希望它会起作用..!
【讨论】: