UIImagePickerで選択した写真をAFNetWorking 2.x系でPOSTしたくなったときに画像の名前とmime typeを取得するにはどうしたらいいのかわからなかったので調べてみました。
まず、
{プロジェクト} -> Targets{プロジェクト} -> General -> Linked Frameworks and Libraries
でAssetsLibrary.frameworkと、MobileCoreServices.frameworkをプロジェクトに導入する。
次に、UIImagePickerControllerのデリゲートメソッド内で処理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSDictionary *imageData = [[NSMutableDictionar alloc] init]; NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; [assetsLibrary assetForURL:imageURL resultBlock:^(ALAsset *asset) { ALAssetRepresentation *representation = [asset defaultRepresentation]; selectedImageName = [representation filename]; selectedImageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; NSString *mimeType = (__bridge_transfer NSString*)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)[representation UTI], kUTTagClassMIMEType); [imageData setObject:[info valueForKey:UIImagePickerControllerOriginalImage] forKey:@"upload_image_file"]; [imageData setObject:selectedImageName forKey:@"upload_image_file_name"]; [imageData setObject:imageKey forKey:@"upload_image_file_key"]; [imageData setObject:mimeType forKey:@"upload_image_file_mimeType"]; [picker dismissViewControllerAnimated:YES completion:nil]; } failureBlock:^(NSError *error) { }]; }
この後は、以下の情報を参考にして無事に、iPhoneからサーバーへ画像をPOSTする事が出来ました。