javascript - 将 Base64 block 写入 writestream

标签 javascript node.js sockets stream base64

我与node.js v0.8建立了客户端/服务器套接字连接。客户端将jpg编码为base64字符串并发送给服务器。服务器正在接收这些 block 并将其写入写入流。写入数据后,新图像文件的大小与原始图像文件相同,但当我尝试打开它时显示损坏的消息。我的base64编码或流写入有问题吗?

Client.js 和 Server.js 片段:

//Client sending base64 encoded string from image

var net = require('net');
var fs = require('fs');

var socket = new net.Socket();

socket.connect(3000, '127.0.0.1', function() {

    var stream = fs.createReadStream(__dirname + '/node.jpg', {encoding: 'base64'});

    stream.on('data', function(chunk){
        socket.write(chunk, 'base64');
    });

});


//Server should write base64 string into new image file

var net = require('net');
var fs = require('fs');

var imageFilename = "node-copy.jpg";

var writeStream = fs.createWriteStream(__dirname + '/node-copy.jpg', {flags: 'a',  encoding: 'base64'});    

var server = net.createServer(function(socket){  

  socket.setEncoding('base64');

  socket.on("data", function(chunk){
    writeStream.write(chunk, 'base64');
  });

}).listen(3000, '127.0.0.1');

最佳答案

您将每个 block 编码为单独的实体,这是错误的做法。

使用流式base64模块,例如this one .

关于javascript - 将 Base64 block 写入 writestream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214267/

相关文章:

javascript - 为什么我不能为我所在的函数创建一个方法?

node.js - TypeError : csv. fromPath 不是函数

java - java中socket的连接问题

c++ - Linux 中 C++ 的 UDP Socket 编程

javascript - 将文件内容传递给外部变量

javascript - 在生成 d3 图之前过滤数据

javascript - vue.js - 转换转换不工作

javascript - _.map 无法正常工作

node.js - 是否可以将文件发布到 MQTT 服务器?

python - tcp python 套接字永远保持连接