我与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/