Javascript解析文本数据错误?

标签 javascript parsing filereader papaparse

我正在尝试从本地目录解析一些数据。 我使用 papa 解析器来做到这一点。 问题是我无法将文本文件分配给变量。我收到此错误;

未捕获类型错误:无法在“FileReader”上执行“readAsText”:参数 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>

最佳答案

  1. getElementsByName 返回始终返回匹配元素的节点列表集合,因此基本上您可以只选择第一个:x = document.getElementsByName("datafile")[0]

  2. Papa.parse 期望其第一个参数是字符串或 File 对象。 File 对象可以从 FileList 中获取,该对象存储在文件输入的 files 属性中。所以基本上(如果在输入中选择文件,它应该可以工作): x = document.getElementsByName("datafile")[0].files[0]

  3. documentaionPapa.parse 本身不返回任何内容,您应该提供回调来获取数据。因此,如果您将 config 对象中的 complete: undefined 替换为类似

    complete: function(data) {
        console.log(data);
    }
    

    您的数据将显示在浏览器控制台中。

关于Javascript解析文本数据错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37921974/

相关文章:

javascript - 如何在 Javascript 或 React Native 中形成 uri 字符串?

javascript - JQuery .load() 到变量或隐藏元素中

parsing - 使用SnakeYaml进行解析时,将忽略yaml中的字段(无法在类中找到属性)

javascript - 使用 html5 FileReader 访问本地文件

javascript - Html5 filereader - 读取本地 Json Array 文件并仅显示特定部分

java.lang.ClassCastException : org. json.simple.JSONArray 无法转换为 org.json.JSONArray

javascript - 通过 RESTful API 使用 django 和 backbone 进行用户注册

javascript - 如何设置图片的原始大小不超过父容器的宽度

java - 使用 Apache Tika 解析 HTML 问题

java - 应为 STRING,但实际为 BEGIN_OBJECT