javascript - 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});
怎么了?我该如何解决
解决方案
这是因为fileselect
如果您两次选择同一个文件,元素不会被刷新,因此不会触发“更改”事件。此处的解决方案:如何检测同一文件的输入类型=文件“更改”?
推荐阅读
- javascript - 在 chart.js 中,如何知道 yAxes 刻度是否碰撞/渲染到另一个
- java - 考虑定义一个 EntityManagerFactory Spring boot 类型的 bean
- python - 需要一种算法来将命题逻辑表达式从中缀转换为后缀
- bazel - 如何在 starlark 中实现 local_archive()
- jquery - 在 AJAX 调用之后通过 JSON 对象进行迭代
- javascript - 复杂对象中的javascript自引用
- reactjs - axios 结合 url api 为什么返回 promise 不值?
- python - 过滤/插值 x,y 点到特定的点数,并包含要包含的特定点的列表
- java - 使用多页方法(页面对象)进行测试 - Selenium Webdriver
- html - Bootstrap 4 轮播,显示 3. Advance 1