Проблема отправки изображений POST - PullRequest
0 голосов
/ 03 июня 2011

В течение нескольких дней я ищу, что не так в моем коде, но безуспешно, и теперь я действительно хочу знать, что не так.
Проблема в том, что я хочу отправить UIImage со своего Iphone на мой сервер, но я каждый раз получаю пустое изображение на своем сервере ... Я не уверен, но я думаю, что проблема исходит от изображения, которое я конвертирую. 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 голосов
/ 28 июня 2011

Проблема связана с изображением высокого разрешения.Мое соединение было слишком медленным.Когда я использую Wi-Fi, код работает.

0 голосов
/ 31 октября 2011

Mate

посмотрите на ваш код здесь: NSData * imageData = [NSData dataWithData: UIImagePNGRepresentation (testImage)];

Вы можете изменить качество изображения, добавив число в скобках для dpi, которое вы хотели бы видеть, например, если бы я хотел, чтобы оно было с качеством 90 dpi, я написал бы его так: [NSData dataWithData : UIImagePNGRepresentation (testImage, 90)]

Теперь я заметил, что ваша картинка в формате .PNG, я всегда работал с .JPEG, и это сработало так что я думаю, тебе стоит попробовать ...

удачи

0 голосов
/ 03 июня 2011

Я думаю, что вы на самом деле отправляете тело POST, закодированное в URL, в отличие от тела POST, состоящего из нескольких частей, которое требуется для отправки данных так, как вы хотите. Так что вам просто нужно сделать следующее, прежде чем начать запрос:

request.postFormat = ASIMultipartFormDataPostFormat;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...