2

私のiPhoneアプリケーションでは、ファイルサイズを取得する必要がありますが、URLしかありません。

ファイルパスがある場合、次のようにサイズを取得できます。

NSDictionary* attributeDict = [[NSFileManager defaultManager] attributesOfItemAtPath:resourcePath error:nil];
NSNumber* fileSizeObj = [attributeDict objectForKey:NSFileSize];
long long fileSizeVal = [fileSizeObj longLongValue];

url がある場合、ファイルサイズを正しく取得するにはどうすればよいですか?

4

1 に答える 1

4

リクエストで使用するNSURLConnectionHead、レスポンスにはexpectedContentLengthが含まれます。

リクエスト

NSMutableURLRequest * req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png"]];
[req setHTTPMethod:@"Head"];
NSURLConnection * con = [[NSURLConnection alloc] initWithRequest:req
                                                    delegate:self];
[con start];
[con release];

デリゲート

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"didReceiveResponse (%lld)", response.expectedContentLength);
}

負の可能性があることに注意してください。

#define NSURLResponseUnknownLength ((long long)-1)

の場合、オブジェクトをパラメータとしてNSURLSession受け入れるタスク ファクトリ メソッドを使用します。NSURLRequest- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler:

于 2013-04-10T08:56:54.160 に答える