1

我正在构建一个 iOS 应用程序,我想将图像上传到 ASP.NET MVC 服务器组件,例如在网页中发布文件。

我在 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 回答