【问题标题】:Upload Image From iPhone to WCF Service将图像从 iPhone 上传到 WCF 服务
【发布时间】:2012-06-21 21:04:39
【问题描述】:

我正在尝试构建一个 iPhone 应用和 c# WCF 服务以将图像上传到 SQL 服务数据库。

我的应用程序使用以下代码将图像分解为 NSData 并发布到 WCF 服务:

NSData *imageData = UIImageJPEGRepresentation(self.image, 90);

NSURL *url = [NSURL URLWithString:@"http://example.com/ImageDiaryService.svc/json/AddMediaItem"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Test" forKey:@"Name"];
[request setPostValue:@"Test description." forKey:@"Description"];
[request setPostValue:@"JPEG" forKey:@"ImageType"];
[request setPostValue:@"iPhone" forKey:@"MediaType"];

[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"ImageData"];

[request setDidFinishSelector:@selector(uploadFinished:)];
[request setDidFailSelector:@selector(uploadFailed:)];
[request setDelegate:self];
[request startAsynchronous];

我遇到的问题是网络服务。我不确定我应该从应用程序 POST 接收什么类型的数据。我尝试将它作为字节数组接收,但没有成功。

我的 WCF 服务是 REST 服务。

非常感谢任何帮助。

【问题讨论】:

    标签: c# iphone objective-c wcf


    【解决方案1】:

    尝试将其作为流接收。 http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx 的博文展示了如何在 WCF REST 服务中接收任意数据。

    【讨论】:

    • 如果我通过流接收图像,我可以向服务发布数据合同吗?我在您的帖子中读到,Stream 参数必须是通过帖子正文传递的唯一参数?
    • 不,您不会将其作为数据合约接收,但如果您真的想要数据合约,那么您需要将图像编码为可以创建数据合约的格式( XML 或 JSON)。在这两种情况下都会有一些性能问题(在 XML 上,您需要对图像进行 base64 编码,在 JSON 上更糟糕,因为 byte[] 值表示为整数数组)。为什么要为这个操作传递数据契约(只需要传递文件内容?对于服务中的其他操作,您仍然可以根据需要使用数据契约。
    • 我需要上传一张图片以及一些其他参数(名称、描述、来源、图片类型等)。您建议处理此问题的最佳方法是什么?我想我可以创建两种方法,一种用于上传图像,另一种用于上传数据,但是与向我的服务发布两个帖子相比,使用 Base64 会更快吗?
    • 如果所有这些参数都是字符串(它们似乎是),您可以在 URI 中传递它们,类似于 [WebInvoke(UriTemplate = "/AddMediaItem?name={name},desc ={description}"] void Upload(Stream contents, string name, string description);
    • 或者您也可以将这些参数作为 HTTP 标头传递,并在服务中使用 WebOperationContext.Current.IncomingRequest.Headers 来检索它们。
    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多