【问题标题】:Send files between android and nosejs through socketandroid和node js之间通过socket发送文件
【发布时间】:2016-03-30 07:10:50
【问题描述】:

我正在尝试构建一个应用程序来在 android 客户端和节点 js 服务器之间传输文件。我设法从 android 客户端发送了一个图像,但我想用节点 js 服务器接收它。我试过这个:

socket.on("image", function (image) {
                    console.log(" image réçu : " +image)
});

但这对我不起作用。我应该如何解决这个问题。

【问题讨论】:

    标签: javascript android node.js sockets


    【解决方案1】:

    Android -> 服务器

    安卓:

    File file = new File("/path/image.jpeg");
    
    try {
        FileInputStream fis = new FileInputStream(file);
        byte imgByte[] = new byte[(int) file.length()];
        fis.read(imgByte);
    
        //convert byte array to base64 string
        String img64 = Base64.encodeBase64URLSafeString(imgByte);
    
        //send img64 to socket.io servr
    } catch (Exception e) {
       //
    }
    

    服务器:

    socket.on("image", function (image) {
        console.log(" image réçu : " +image)
        //use fs.writeFile
    
        image = image.replace(/^data:image\/png;base64,/, "");
    
        require("fs").writeFile("out.png", image, 'base64',function(err) {
            console.log(err);
        });
    
    });
    

    服务器 -> 安卓

    服务器:

    fs.readFile("/img/your_img_in_server.jpeg", function(err, data){
    
        var img64 = new Buffer(data, 'binary').toString('base64')
        socket.emit("send_img", img64)
    
    })
    

    安卓:

    socket = IO.socket("http://localhost");
    socket.on("send_img", new Emitter.Listener() {
    
      @Override
      public void call(Object... args) {    
        String data = (String) args[0];
        byte[] b = Base64.decode(data,Base64.DEFAULT);
        //your bitmap data
        Bitmap bmp = BitmapFactory.decodeByteArray(b,0,b.length);
      }
    
    });
    
    socket.connect();
    

    fs api:https://nodejs.org/api/fs.html https://github.com/socketio/socket.io-client-java

    这些应该可以工作(我没有测试代码)。

    【讨论】:

    • 你能写代码吗?我没明白你的意思
    • 然后发送给客户呢?如果你能帮助我,我会很棒
    • 更新了我的答案。
    • 将整个图像加载到内存中以将其发送到服务器是非常糟糕的做法。这可能会导致 OutOfMemoryException。
    • @KonstantinBerkow,你有什么建议?
    猜你喜欢
    • 2021-07-09
    • 2015-10-04
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多