2012-12-09 5 views
-1

я получаю исключение, как и в названии во время отправки изображения на Java серверjava.io.utfdataformatexception: Слишком длинная строка

Вот код:

 ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     img.compress(Bitmap.CompressFormat.PNG, 100, stream); 
     byte[] byteArray = stream.toByteArray(); 

     String imageDataString = new String(Base64.encodeBase64(byteArray)); 
     System.out.println(imageDataString); 

     dataOutputStream.writeUTF(imageDataString); 
     dataOutputStream.flush(); 

Где img является растровым файл.

Любая помощь будет высоко оценена!

+0

работает ли для меньших изображений? как вы восстанавливаете изображение на сервере из строки? –

+0

что такое тип данныхOutputStream? –

+0

Изображение не отправляется, потому что строка декодирования слишком длинная в соответствии с исключением, но когда я отправляю некоторую другую строку кодировки, например 'string =" некоторую строку ", она получает сообщение – Saaram

ответ

1

@Sarram следовать коду в ссылке раздува, я отправлял изображения в запросе мыла наряду с другими данными в виде base64String я был преобразовав его в файл

удара является эталонным кодом

Writing decoded base64 byte array as image file

Я использую этот прохладный декодер import sun.misc.BASE64Decoder; сторона сервера может сделать это так

 String filePath = "/destination/temp/file_name.jpg"; 
     File imageFile = new File(filePath); 
     FileOutputStream fos = null; 
     try { 
      fos = new FileOutputStream(imageFile);//create file 
     } catch (FileNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
     BASE64Decoder decoder = new BASE64Decoder();//create decodeer object 
     byte[] decodedBytes = null; 
     try { 
      decodedBytes = decoder.decodeBuffer(imageFileBase64);//decode base64 string that you are sending from clinet side 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     try { 
      fos.write(decodedBytes);//write the decoded string on file and you have ur image at server side 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      fos.flush(); 
      fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
+0

, вы получали изображения с SD-карты эмулятора Android? – Saaram

+0

здесь я отправляю изображения с клиента на сервер, поэтому мне нужно закодировать его на андроиде и декодировать его на сервере в java – Saaram

+0

Я принимал ввод изображения с SD-карты в андроид-клиенте, а затем я кодировал его в base64 String и я помещал эту строку в запрос вызова мыла, а на стороне сервера я расшифровывал его, код для декодирования изображения в базе для базы 64 String и преобразования его в файл был выше –

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