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,@"");
}
}];
}
在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,@"");
}
}];
}