Javascript 将Meteor与FileReader一起使用,读取文件时出错
我是新来的流星。我想访问客户端的本地.csv文件。我使用了FileReader方法,但代码总是带着错误退出。下面是代码 html文件Javascript 将Meteor与FileReader一起使用,读取文件时出错,javascript,file-upload,meteor,filereader,Javascript,File Upload,Meteor,Filereader,我是新来的流星。我想访问客户端的本地.csv文件。我使用了FileReader方法,但代码总是带着错误退出。下面是代码 html文件 <template name="filePage"> <div> <form id="form"> <label>File: </label> <input type="file" id="file" name="filename" size="50"
<template name="filePage">
<div>
<form id="form">
<label>File: </label>
<input type="file" id="file" name="filename" size="50"/><br/>
<br/>
<input type="submit" id="submit" value="Upload Now"/>
</form>
</div>
</template>
另外,我试图用嵌入的javascript编写一个html文件。那么“文件阅读器”就可以正常工作了。我想问题不在于我的浏览器或操作系统。
我尝试将“FileReader”javascript放在服务器端方法中,然后从客户端调用该方法。但是出现了一个referenceError,表明“没有定义FileReader”
我真的不明白为什么会发生这个问题??还有其他方法可以实现我的目标吗?- 您忘记传递
和事件
模板
(e,t)
- 您可能希望停止表单提交的传播,以避免重新加载页面
e.stopPropagation()
e.preventDefault()
- 您想使用解析后的模板
来读取元素t
t.find(“#文件”)
- 您希望使用
捕获错误错误
我可以问一下为什么我们应该在这里使用“e.stopPropagation();e.preventDefault();”,但是当我用html编写嵌入式javascript()时,它是不需要的?请原谅我问了一些天真的问题,我对Meteor和javascript非常陌生。非常感谢。之所以需要它,是因为你使用了
表单
和提交
,这两个功能就像一个链接,你不想离开页面。实际上,您可以完全删除表单层,只需说'click#submit'
而不是'submit form'
,然后您就不需要停止浏览器更改页面,您可以删除这两行。事实上,知道这一点是很好的,因为有时候你会想使用link
元素,但你不想让它跳转页面href='javascr…'
不是正确的方法,因为您希望将脚本和html分开。希望这是有道理的。
Template.filePage.events({
'submit form': function () {
var file = document.getElementById("file").files[0];
var reader = new FileReader();
reader.onload = function() {
alert("load succeeded");
};
reader.onerror = function(event){
alert(event.target.error.code); //I got error code 4 here.
}
reader.readAsText(file);
},
});
Template.filePage.events({
'submit form': function (e,t) {
e.stopPropagation();
e.preventDefault();
var file = t.find('#file').files[0];
var reader = new FileReader();
reader.onload = function() {
alert("load succeeded");
};
reader.onerror = function(error){
alert(error);
}
reader.readAsText(file);
}
});