【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
はい、次はサーバー側いきますよー