Javascript 为什么filereader不工作?
我有一个用socket.io和node.js构建的聊天应用程序。下面有一个函数,用于从输入读取文件并将其作为base64字符串发送到服务器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
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]);