无法在客户端保存jpeg图像

时间:2016-08-17 10:45:21

标签: javascript node.js socket.io fs

我在服务器端存储了一个图像。每当客户端连接到服务器时,它都会通过套接字发送图像。收到的图像我能够在画布上显示它,但是我无法将接收到的图像保存在本地磁盘中。我试图使用fs.writeFile(),但也许我没有发送正确的参数。任何导致此问题的方法都会有所帮助。谢谢。 [我希望将其实现为基本的通信客户端 - 服务器]。

为了优化它,我能以更快的方式实现相同的操作吗?任何有效的代码也会有所帮助。

//server side js code

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

var fs = require('fs'); // required for file serving

http.listen(6969, function(){
  console.log('listening on port 6969');
});


// trying to serve the image file from the server
io.on('connection', function(socket){
  start = new Date().getTime();
  console.log(start);
  console.log('a user connected');
  fs.readFile(__dirname + '/image.jpg', function(err, buf){
    socket.emit('image', { image: true, buffer: buf.toString('base64') });
    console.log('image file is transmitted');
  });
});
<script>
var socket = io("http://139.25.100.101:6969");
var ctx = document.getElementById('canvas_win').getContext('2d');
var fs = require('fs');
socket.on("image", function(info) {
  if (info.image) {
    var img = new Image();
    img.src = 'data:image/jpeg;base64,' + info.buffer;
    ctx.drawImage(img, 0, 0);
	 var end = new Date().getTime();
	 document.getElementById("demo").innerHTML = end; 
	fs.writeFile('logo.jpeg', img.src, 'data:image/jpeg;base64,', function(err){
       if (err) throw err
       console.log('File saved.')
	 
})
}
});

1 个答案:

答案 0 :(得分:-1)

我对此非常陌生,但我认为对于#34;沟通&#34;在两个实体之间,两者都必须能够在某个时刻充当服务器,因此两端都需要PHP脚本。

客户端通常发送请求由服务器处理的请求,因此如果您需要p2p通信,客户端必须下载php脚本以使其充当服务器....

同样,我是新手,所以我可能(非常)错了