Socket.io:同一张图片不能连续发送两次

时间:2019-05-28 14:19:15

标签: javascript node.js file socket.io

我有聊天应用程序,它具有可以与您发送图像的功能,但是我发现它不能连续两次发送两个图像,但是您可以像这样发送两次相同的图像

-发送图片1

-发送图片2

-发送图片1

我还具有可以粘贴图像并使用(剪贴板)发送的功能,并且可以连续发送图像,所以我很困惑是什么原因造成的? 这是我们的代码:

客户端:

document.getElementById('fileselect').addEventListener('change', function () {
   if (this.files.length != 0) {
      var file = this.files[0],
          reader = new FileReader();

    reader.onload = function (e) {

       this.value = '';
       socket.emit('img', {
            image: e.target.result

       })
    };
       reader.readAsDataURL(file);
  };
}, false);

和服务器端

socket.on('img', function(data) {
io.in(socket.current_room).emit('img', {image: data.image, id: socket.id});

怎么了?我该怎么解决

1 个答案:

答案 0 :(得分:1)

这是因为如果两次选择相同的文件,fileselect元素不会刷新,因此不会触发“ change”事件。这里的解决方案:How to detect input type=file "change" for the same file?