我试图解析本地目录中的一些数据。 我用papa解析器来做。 问题是我无法将文本文件分配到变量中。我收到了这个错误;
未捕获的TypeError:无法执行' readAsText' on' FileReader':参数1的类型不是' Blob'
我已经对它进行了搜索,我发现在使用HTML文件阅读器阅读文件时这是一个非常常见的错误。
我的代码是;
<!doctype html>
<html class="no-js" lang="">
<head>
<script src="https://github.com/mholt/PapaParse/blob/master/papaparse.js"></script>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Parse Example</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/vendor/modernizr-2.8.3.min.js"></script>
</head>
<p>Click the button to Upload .</p>
<button onclick="myFunction()" type="INPUT">Load</button>
<input type="file" name="datafile" size="40">
<script>
var x;
var config = {
delimiter: "", // auto-detect
newline: "", // auto-detect
header: true,
dynamicTyping: false,
preview: 0,
encoding: "",
worker: false,
comments: false,
step: undefined,
complete: undefined,
error: undefined,
download: true,
skipEmptyLines: false,
chunk: undefined,
fastMode: undefined,
beforeFirstChunk: undefined,
withCredentials: undefined
};
function myFunction() {
x = document.getElementsByName("datafile");
myfile = Papa.parse(x, config);
document.getElementById("demo").innerHTML = myfile;
}
</script>
<p id="demo"></p>
</body>
</html>
&#13;
答案 0 :(得分:3)
getElementsByName
返回始终返回匹配元素的nodelist集合,因此基本上您只需选择第一个:x = document.getElementsByName("datafile")[0]
Papa.parse
期望其第一个参数为字符串或File
对象。 File
对象可以从FileList
获得,它存储在文件输入的files
属性中。所以基本上(如果在输入中选择了文件,它应该工作):
x = document.getElementsByName("datafile")[0].files[0]
由于documentaion表示Papa.parse
本身并未返回任何内容,因此您应提供回调以获取数据。因此,如果您使用
complete: undefined
对象中的config
complete: function(data) {
console.log(data);
}
您将在浏览器控制台中显示您的数据。