2013-08-29 7 views
0

Мне нужно загрузить изображение с устройства iOS в веб-службу. При загрузке изображения я использовал;Преобразование UIImage в NSData

NSData* pictureData = UIImagePNGRepresentation(originalImage); 

На самом деле это нормально работает. Однако загруженные изображения не отображаются в IE. Я попытался загрузить как JPG, так и PNG, я могу видеть изображения во всех других браузерах, но он не работает в IE. Поэтому я думал, что это может быть преобразование его в NSData.

Есть ли другой способ конвертировать UIImage в NSData?

Или любая другая идея, которая может вызвать проблему?

Вот как я могу загрузить изображение;

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
[request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 

NSData* pictureData = UIImagePNGRepresentation(originalImage); 

if (pictureData) { 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.JPG\"\r\n", FileParamConstant] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:pictureData]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
+1

проблема скорее всего не в том, как вы загружаете свое изображение, а о том, как оно отображается на вашем сайте. –

+0

Я загружаю его в JIRA с помощью своих собственных служб REST. Эта функциональность используется множеством различных приложений. Поэтому в моем коде должно быть что-то не так. Это то, что я использую: [link] (https://docs.atlassian.com/jira/REST/latest/#idp2011456) –

+0

Помимо установки * правильного * заголовка содержимого контента, вы должны установить размер содержимого * multipart * (размер данных изображения) явно. NSURLConnection будет делать это для всего сообщения, но я твердо верю не в * multipart *. – CouchDeveloper

ответ

1

Вы преобразуем изображение в представлении PNG, а затем переименовать его Image.jpg

IE может запутаться, что. Попробуйте либо переименовать свое изображение в image.PNG, либо использовать UIImageJPEGRepresentation

+0

Я пробовал каждую комбинацию из них, например, используя JPG с UIImageJPEGRepresentation, используя PNG с UIImagePNGRпредпрезентацией, назвав их как image.PNG, назвав их как image.JPG ... но никто из них не работал. –

+0

Вы также изменили тип контента? Другим решением может быть отправка изображения в кодировке base64. Посмотрите на QSUtilities для преобразования данных в base64 https://github.com/mikeho/QSUtilities –

+0

Ну, Николас имел в виду, что Content-Type multipart должен соответствовать фактическому типу изображения. В вашем коде это не так. – CouchDeveloper

Смежные вопросы