我正在创建一个服务器系统,其中服务器通过websockets将文件上传到客户端。服务器正在正确发送文件,但我不知道如何在客户端写入文件。
我尝试使用“ msg”,“ msg.data”和许多其他方式来接收文件数据,但它始终会产生1kb的文件。我还尝试过将文件转换为base64,然后再在客户端发送和转换回(因此消息将是文本而不是二进制),但是没有用。
服务器:
var ws = require("nodejs-websocket")
ws.setBinaryFragmentation(99999999999)
var fs = require('fs'),
file = process.argv[2],
data = fs.readFileSync("./map.zip");
var server = ws.createServer(function (connection) {
connection.sendBinary(data)
}).listen(1000)
客户:
var connection = new WebSocket("ws://localhost:1000")
connection.onmessage=function(msg){
var fs=require("fs")
fs.writeFileSync("./test.zip",msg.data)
}
答案 0 :(得分:1)
我认为您应该考虑坚持使用base64编码方法,因为二进制文件很难调试。
将其发送为base64并使用
从客户端接收它var connection = new WebSocket("ws://localhost:1000")
connection.onmessage=function(msg){
var fs=require("fs")
let buffer = new Buffer(msg.data);
fs.writeFileSync("test.zip", buffer);
}
(这假定msg.data
是base64编码的二进制文件)