问题发送图像POST

时间:2011-06-03 15:03:13

标签: iphone objective-c post uiimage

连续几天,我在代码中查找错误但没有成功,现在我真的想知道什么是错的。
问题是我想从我的Iphone发送UIImage到我的服务器,但每次我在服务器上都收到一个空白图像...我不确定,但我认为问题来自我转换的图像。 UIImage来自takePicture方法 请检查我的代码:

首先我打电话给takePicture并且:

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {
self.testImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

testImage是我的ViewController的一个属性 然后我让它发送UIImage:

NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(testImage)];
NSURL *url = [NSURL URLWithString:@"http://myserver/mytest.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addData:imageData withFileName:@"tmp.png" andContentType:@"image/png" forKey:@"userfile"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startAsynchronous];

并查看结果:

- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
NSLog(@"response: %@", responseString);

// Use when fetching binary data
NSData *responseData = [request responseData];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
    NSLog(@"Request Failed Error: %@", error);
}

然后我在服务器上收到一张空白图片...
请帮帮我='(

3 个答案:

答案 0 :(得分:0)

我认为你实际上是在发送一个URL编码的POST主体,而不是多部分POST主体,这是发送你想要的数据所必需的。因此,您只需在开始请求之前执行以下操作:

request.postFormat = ASIMultipartFormDataPostFormat;

答案 1 :(得分:0)

问题来自高分辨率图像。我的联系太慢了。当我使用wifi时,代码可以工作。

答案 2 :(得分:0)

伴侣,

在这里查看您的代码: NSData * imageData = [NSData dataWithData:UIImagePNGRepresentation(testImage)];

你可以通过在你想要的dpi的括号中添加一个数字来改变图像质量,例如,如果我希望它的质量是90 dpi,我就会这样写:[NSData dataWithData :UIImagePNGRepresentation(testImage,90)]

我现在注意到你的图片是.PNG格式,我总是和.JPEG一起工作 所以我认为你应该试一试......

祝你好运