How to find size of a file before downloading it in iOS 7?

前端 未结 7 1689
天涯浪人
天涯浪人 2020-12-02 00:43

Wanted to find size of a file on some server before downloading it in iOS 7... I have a method of NSURLConnectionDelegate but it is deprecated after iOS 4.3

Here was

7条回答
  •  时光取名叫无心
    2020-12-02 01:12

    Make a request using the HEAD method. For example:

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"HEAD"];
    

    This request will be identical to a GET but it won't return the body. Then call

    long long size = [response expectedContentLength];
    

    Complete example with NSURLConnection (works for NSURLSession too of course):

    NSURL *URL = [NSURL URLWithString:@"http://www.google.com"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
    [request setHTTPMethod:@"HEAD"];
    NSHTTPURLResponse *response;
    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error: nil];
    long long size = [response expectedContentLength];
    NSLog(@"%lld",size);
    

    This is also useful to conditionally download based on the Last-Modified header (assuming that the server sends you that).

    if ([response respondsToSelector:@selector(allHeaderFields)]) {
        NSString *lastModifiedString = [[response allHeaderFields] objectForKey:@"Last-Modified"];
    }
    

提交回复
热议问题