为什么文件阅读器不工作?
Why is filereader not working?
我有一个使用 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
[=18= 完成]
请注意,由于 this
是有效的 javascript 运算符,因此您的原始代码片段不会产生错误。
您可以在此处阅读有关 this
的更多信息:JavaScript/Reference/Operators/this
function readURL(el) {
if (el.files && el.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( el.files[0] );
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="file" type='file' onchange="readURL(this)"/>
<img id="img">
您正在访问错误对象中的选定文件。
如果您有以下 html
<input id="file" type='file' onchange="readURL()"/>
然后在 "readURL" 方法中获取文件对象,试试这个:
var file = (((this.file || {}).files || [])[0]);
@Hundotte ..希望对你有帮助。
我有一个使用 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
[=18= 完成]
请注意,由于 this
是有效的 javascript 运算符,因此您的原始代码片段不会产生错误。
您可以在此处阅读有关 this
的更多信息:JavaScript/Reference/Operators/this
function readURL(el) {
if (el.files && el.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( el.files[0] );
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="file" type='file' onchange="readURL(this)"/>
<img id="img">
您正在访问错误对象中的选定文件。 如果您有以下 html
<input id="file" type='file' onchange="readURL()"/>
然后在 "readURL" 方法中获取文件对象,试试这个:
var file = (((this.file || {}).files || [])[0]);
@Hundotte ..希望对你有帮助。