我正在尝试从我的iPhone应用中拍照并上传到WCF REST服务。
我使用UIImagePickerController访问摄像头并将新照片分配给我视图中的UIImageView。
然后我使用UIImageJPEGRepresentation将其转换为“真实”数据。
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 0.2);
然后我尝试向我的服务提交请求:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setFile:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"imageData"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
[request startAsynchronous];
服务接收数据并将其写入我的网络服务器上的磁盘。但我无法在服务器上打开图像,因为Windows告诉我文件已损坏。我猜我需要在iPhone应用程序中设置某种编码或内容类型。上传完成后,我的服务会收到HTTP状态码200.
我已经制作了一个小型的C#客户端应用程序来测试该服务,当我使用这个客户端从我的Windows机器上传照片时一切都很好。所以我想这应该是我在iPhone的请求中遗漏的东西。
感谢您的阅读,以及您可以提供的任何帮助。
答案 0 :(得分:1)
在尝试了大量的方法后,我终于使用了它:
[request appendPostData:imageData];
而不是:
[request setFile:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"imageData"];