0

我正在使用 .NET Web 服务开发 iOS 应用程序。在其中一个 Web 服务中,我必须将图像作为HttpPostedFileBase在名为“ file ”的参数中发送,该参数将返回图像 URL 和状态参数作为响应。其实我不确定什么是 HttpPostedFileBase。但我试图将其作为字节发送。我从 WS 获取图像 URL 为空。我猜 WS 调用工作正常,但问题在于我发送图像的方式。我正在使用以下代码将图像数据附加到 HTTP 正文。

NSData *imageData = UIImageJPEGRepresentation(image, 1);
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"file.jpeg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[request addValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%i", [postData length]] forHTTPHeaderField:@"Content-Length"];
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

请让我知道我怎样才能让它工作。如果您需要更多详细信息,请告诉我。

谢谢。

4

2 回答 2

0

对不起大家。问题出在 HTTP 标头中。上面@FahriAzimov 发布的链接(ios Upload Image and Text using HTTP POST )帮助了我。我的错,实际上我很困惑 .NET Web 服务会有不同的格式。

我必须像发送普通网络服务一样发送图像。工作代码如下:

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

[postData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", @"file"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[postData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

非常感谢大家的帮助。

于 2013-08-27T06:22:01.577 回答
-1

使用 ASIHTTPRequest 库,它非常好,您可以将图像作为附件发送到您的 .net 服务器.... http://allseeing-i.com/ASIHTTPRequest/How-to-use

here is sample code

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

// Upload a file on disk
[request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"
forKey:@"photo"];

// Upload an NSData instance
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
于 2013-08-26T11:11:23.877 回答