IOS: 检查远程文件是否存在

IOS: Check existence of remote file

在IOS中是否有任何资源有效的方法(不占用主线程的方法)来检查远程文件的存在?

我在服务器上存储了用户图片。虽然有一个一致的 url 方案,但有些图像是 .jpg,其他图像是 .gif 等。所以为了获得正确的图像名称,我需要检查 user/file.gif 是否存在,user/file.jpg 存在等,以便将文件下载到 IOS 应用程序。

我在另一个 answer in IOS

中找到了这段代码
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
        [request setHTTPMethod:@"HEAD"];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

但是我不知道怎么用。理想情况下,我想得到一个布尔值是或否关于 .gif 文件是否存在,.jpg 文件是否存在等用户个人资料图片,这样我就可以填写正确的名称来下载用户图片。

另一种方法是在后端为 return 文件编写一个服务,但想知道是否可以在 IOS.

中全部完成

感谢您的任何建议。

**Use this function below to check whether file exists at specified url**

+(void)checkWhetherFileExistsIn:(NSURL *)fileUrl Completion:(void (^)(BOOL success, NSString *fileSize ))completion
{
    //MAKING A HEAD REQUEST
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:fileUrl];
    request.HTTPMethod = @"HEAD";
    request.timeoutInterval = 3;

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
     {
         NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
         if (connectionError == nil) {
             if ((long)[httpResponse statusCode] == 200)
             {
                 //FILE EXISTS

                 NSDictionary *dic = httpResponse.allHeaderFields;
                 NSLog(@"Response 1 %@",[dic valueForKey:@"Content-Length"]);
                 completion(TRUE,[dic valueForKey:@"Content-Length"]);
             }
             else
             {
                 //FILE DOESNT EXIST
                 NSLog(@"Response 2");
                 completion(FALSE,@"");
             }
         }
         else
         {
             NSLog(@"Response 3");
             completion(FALSE,@"");
         }

     }];
}