2015-10-21 5 views
0

Есть ли какой-либо ресурсоэффективный способ (что-то, что не связывает основной поток) в IOS, чтобы проверить наличие удаленного файла?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 существует и т. Д. Для профиля профиля пользователя, поэтому я могу заполнить правильное имя, чтобы загрузить user pic.

Альтернативой было бы написать службу на задней стороне, чтобы вернуть файл, но интересно, можно ли все это сделать в IOS.

Спасибо за любые предложения.

ответ

3
**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,@""); 
     } 

    }]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^