読者です 読者をやめる 読者になる 読者になる

ふるすたっくえんじにあっぽい人の日記

ASP .NET MVC (C#)、.NET Framework、iOS (Objective-c) アプリ、Androidアプリ (Java)、AWS、たまにLAMPとかプロジェクトマネジメントあたりのお話

【iOS】POSTで画像アップロード

はい、タイトルの通りです。
POSTで画像アップロードする場合。
ということでiOS側からサンプルコードを。
自作ライブラリからの抜き出しなのでHTTPリクエスト周りについては割愛してます。
そのうち書きますねw

NSString *url = @"リクエスト先URL";
UIImage *image = アップロード対象のUIImageオブジェクト;
NSString *imageName = @"画像ファイル名";

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSData *pngData = UIImagePNGRepresentation(image);
NSMutableData *body = [NSMutableData data];
NSString *boundary = @"---------------------------168072824752491622650073";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary]dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file[]\"; filename=\"%@\"\r\n", imageName]dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/png\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:pngData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
request.HTTPBody = body;
[request setValue:[NSString stringWithFormat:@"%d", body.length]forHTTPHeaderField:@"Content-Length"];
[request setHTTPMethod:@"POST"];
self.receivedData = [NSMutableData data];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
[connection start];

もうおまじないだと思ってください。
コピペしたら動くんで、はい。
詳しく知りたい方は「multipart/form-data」とかでググってくださいw
はい、次はサーバー側いきますよー