2
我正在尝试构建iPhone应用程序和c#WCF服务以将图像上载到SQL服务数据库。从iPhone上传图像到WCF服务
我有我的应用程序突破的图像向下的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];
我遇到的问题是与Web服务。我不确定我应该从应用程序POST接收什么类型的数据。我试着将它作为一个字节数组接收,但没有奏效。
我的WCF服务是一个REST服务。
任何帮助,非常感谢。
如果我通过Stream接收图像,我能够向服务发布数据合同吗?我在你的帖子上读到Stream参数必须是通过帖子主体传递的唯一参数? – 2011-05-17 19:30:24
不,您不会收到它作为数据协定,但如果您确实需要数据协定,那么您需要以可为其创建数据协定(XML或JSON)的格式对图像进行编码。在这两种情况下,都会有一些perf命中(对于XML,您需要对图像进行64位编码,在JSON上它更糟糕,因为byte []值表示为整数数组)。为什么您需要为此操作传递数据合同(您只需传递文件内容?对于服务中的其他操作,如果需要,仍然可以使用数据合同。) – carlosfigueira 2011-05-17 20:12:49
我需要上传图像以及其他一些参数(名称,描述,来源,图像类型等),你会建议什么是最好的方法来处理这个问题?我想我可以创建两种方法,一种上传图像,另一种上传数据,但它会更快它使用Base64相比,做两个职位到我的服务? – 2011-05-17 20:19:37