備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

UIImagePickerで取得した画像の名前とMIME TYPEを取得してPOST

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する事が出来ました。


ド定番OSS!AFNetworking 2.xの使い方 | Developers.IO