javascript - 客户端无法保存jpeg图片

标签 javascript node.js socket.io fs

我在服务器端存储了一张图像。每当客户端连接到服务器时,它都会通过套接字发送图像。接收到的图像我可以将其显示在 Canvas 上,但是我无法将接收到的图像保存在本地磁盘中。我正在尝试使用 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.')
	 
})
}
});

最佳答案

我对此很陌生,但我认为对于两个实体之间的“通信”,两个实体都必须能够在某个时刻充当服务器,因此两端都需要一个 php 脚本。

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

再说一遍,我是新手,所以我可能(非常)错了

关于javascript - 客户端无法保存jpeg图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994459/

相关文章:

javascript - socket.io - 'connect' 事件不会在客户端触发

javascript - NG-REPEAT 什么也不显示..即使数据解析成功

java - nodejs child_process exec 'java -version'

javascript - 根据类别更新对象类型的mongodb字段

node.js - 自 SSL 以来没有 'Access-Control-Allow-Origin'

php - 在 PHP 中使用 Node.js、Socket.io、Redis 的私有(private)聊天消息

javascript - 在 Jquery 中查询表

javascript - JQuery:如何将文件推送到另一个输入数组值?

javascript - 对元素 jQuery 进行回调

node.js - 试图让一个 headless WordPress 在 yarn 启动命令上进行热重载