1

Webページへのファイルの投稿のようにASP.NETMVCサーバーコンポーネントに画像をアップロードするiOSアプリを構築しています。

iOSでNSMutableURLRequestオブジェクトとNSConnectionオブジェクトを作成し、.NETサーバーコンポーネントが機能している呼び出しを確認しました。

NSMutableURLRequest *request=[[NSMutableURLRequest alloc]init];
[request setTimeoutInterval:(interval==0?SERVICE_DEFAULT_TIMEOUT_INTERVAL:interval)];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",SERVICE_BASEURL,url]]];
[request setHTTPMethod:@"POST"];
...

画像データは、AVFoundationモジュールのNSDataオブジェクトにあります

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];

サーバーでは、.NETコンポーネントのコントローラーメソッドは次のとおりです。

[HttpPost]
public JsonResult UploadMedia(HttpPostedFileBase fileData)
{
 ...
  return Json(@"Success");
}

目標は、画像データをサーバーに転送して保存することです。私の質問は次のとおりです。

  1. 他にどのようなHttpHeaderField値を作成する必要がありますか?
  2. NSMutableURLRequestに画像データを埋め込むにはどうすればよいですか?
  3. .NETコンポーネントメソッドのパラメータはどのタイプにする必要がありますか?
  4. #3のタイプに基づいて、サーバーコンポーネントの画像データをどのように抽出する必要がありますか?
4

1 に答える 1

1

マルチパートフォームデータを使用してデータを転記することができます。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url 
                                        cachePolicy:NSURLRequestUseProtocolCachePolicy 
                                                   timeoutInterval:600];

request.HTTPMethod = @"POST";

NSString *boundry = @"---------------AF7DAFCDEFAB809";
NSMutableData *data = [NSMutableData dataWithCapacity:300 * 1024];

[data appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n\r\n", @"field name"]
                             dataUsingEncoding:NSUTF8StringEncoding]];
[data appendData:imgdata];   // data upload
[data appendData:[[NSString stringWithString:@"\r\n"] 
                          dataUsingEncoding:NSUTF8StringEncoding]];

[data appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundry] 
                  dataUsingEncoding:NSUTF8StringEncoding]];

request.HTTPBody = data;
于 2012-04-18T00:07:59.610 に答える