Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么filereader不工作?_Javascript_Html_Node.js_Socket.io_Filereader - Fatal编程技术网

Javascript 为什么filereader不工作?

Javascript 为什么filereader不工作?,javascript,html,node.js,socket.io,filereader,Javascript,Html,Node.js,Socket.io,Filereader,我有一个用socket.io和node.js构建的聊天应用程序。下面有一个函数,用于从输入读取文件并将其作为base64字符串发送到服务器 function readURL() { if (this.files && this.files[0]) { var FR= new FileReader(); FR.onload = function(e) { $("img").attr("src", e.targe

我有一个用socket.io和node.js构建的聊天应用程序。下面有一个函数,用于从输入读取文件并将其作为base64字符串发送到服务器

function readURL() {
    if (this.files && this.files[0]) {
         var FR= new FileReader();
         FR.onload = function(e) {
              $("img").attr("src", e.target.result);
              socket.emit('image', e.target.result);
              console.log(e.target.result);
         };       
         FR.readAsDataURL( this.files[0] );
    } 
};
我的HTML如下所示:

<input id="file" type='file' onchange="readURL()"/>
<img id="img">


但是,在上传文件时,不会发生任何事情。没有记录任何错误,甚至没有任何内容记录到控制台。为什么会这样?

如果您显示的代码是所有代码,那么这将修复它

您需要从输入的
onchange
方法传递一个引用,此处使用
this
完成,然后向函数添加一个参数,此处使用
el

注意,由于
是有效的javascript运算符,因此在原始代码段中不会生成错误

您可以在此处阅读有关此的更多信息:

函数readURL(el){
if(el.files&&el.files[0]){
var FR=new FileReader();
FR.onload=功能(e){
$(“img”).attr(“src”,即target.result);
socket.emit('image',e.target.result);
console.log(如target.result);
};       
FR.readAsDataURL(el.files[0]);
} 
};

您在错误的对象中访问选定的文件。 如果你有下面的html

<input id="file" type='file' onchange="readURL()"/>

@亨多特。。希望它能对您有所帮助。

您如何在NodeJS中侦听套接字?可能会发生这种情况,因为函数的作用域内没有
此文件。谢谢!它工作得很好。但是,在上传文件之前,它会说uncaughttypeerror:无法读取未定义的属性“files”。这将阻止应用程序在上载图像之前运行node.js命令。
var file = (((this.file || {}).files || [])[0]);