2016-03-23 3 views
3

У меня есть проблема с отправкой данных от Android Client до NodeJS Server.Как отправить файл изображения (двоичные данные) с помощью socket.io?

Я использую java-библиотеку Socket.IO-client у своего клиента.

Но для меня мало информации.

Как я могу отправить двоичные данные от клиента android на сервер nodejs?

ответ

6

Вы можете использовать Base64 для закодировать изображение:

public void sendImage(String path) 
    { 
     JSONObject sendData = new JSONObject(); 
     try{ 
      sendData.put("image", encodeImage(path)); 
      socket.emit("message",sendData); 
     }catch(JSONException e){ 
     } 
    } 

    private String encodeImage(String path) 
    { 
     File imagefile = new File(path); 
     FileInputStream fis = null; 
     try{ 
      fis = new FileInputStream(imagefile); 
     }catch(FileNotFoundException e){ 
      e.printStackTrace(); 
     } 
     Bitmap bm = BitmapFactory.decodeStream(fis); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bm.compress(Bitmap.CompressFormat.JPEG,100,baos); 
     byte[] b = baos.toByteArray(); 
     String encImage = Base64.encodeToString(b, Base64.DEFAULT); 
     //Base64.de 
     return encImage; 

    } 

Так в основном вы отправляете строку node.js

Если вы хотите получить изображение только расшифровывает в Base64 :

private Bitmap decodeImage(String data) 
{ 
    byte[] b = Base64.decode(data,Base64.DEFAULT); 
    Bitmap bmp = BitmapFactory.decodeByteArray(b,0,b.length); 
    return bmp; 
}  
+0

Благодарим за помощь. –

+0

Рад помочь :) –

+1

Th anks для code.It помочь мне много. –

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