首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过socket在android和nosejs之间发送文件

通过socket在android和nosejs之间发送文件
EN

Stack Overflow用户
提问于 2016-03-30 15:10:51
回答 1查看 2.1K关注 0票数 1

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

代码语言:javascript
运行
复制
socket.on("image", function (image) {
                    console.log(" image réçu : " +image)
});

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

EN

回答 1

Stack Overflow用户

发布于 2016-03-30 16:14:35

安卓->服务器

Android:

代码语言:javascript
运行
复制
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) {
   //
}

服务器:

代码语言:javascript
运行
复制
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);
    });

});

服务器->安卓

服务器:

代码语言:javascript
运行
复制
fs.readFile("/img/your_img_in_server.jpeg", function(err, data){

    var img64 = new Buffer(data, 'binary').toString('base64')
    socket.emit("send_img", img64)

})

Android:

代码语言:javascript
运行
复制
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();

文件系统接口:https://nodejs.org/api/fs.html https://github.com/socketio/socket.io-client-java

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36301979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档