2017-07-24 143 views
2

我有一个文本文件,其中包含来自另一个(C++)应用程序的某些日志记录数据。由于我不想使用一些GUI框架来显示日志数据的一些可视化分析,我想使用HTML和Javascript来完成这项任务。使用HTML和Javascript读取本地纯文本文件

我设法通过文件输入<input id="inputfile" type="file"/>输入数据,然后通过Javascript中的FileReader读取文件。

我的问题:日志记录文件与HTML + JS文件位于同一个目录中,并且始终具有相同的文件名,因此在不重复选择相同文件的情况下阅读文件会很好。 我无法做到这一点。我尝试<object id="data" type="text/plain" data="out.txt"></object>将日志文件包含在HTML中,然后通过JS读取,但没有成功。

有关如何避免用户选择并在加载文档时总是读取相同(静态)文件的想法?如果可能的话: (a。)只需使用HTML,Javascript和jQuery。 (b。)而不必指定绝对文件路径。

还有一个使用XMLHttpRequest的答案。但正如我所说,我需要一个相对路径,我的数据是纯文本。

+1

我们不能去prev目录,如果所有都在一个目录或孩子,然后c使用XMLHttpRequest进行读取,检查[this](https://stackoverflow.com/a/20106436/3551786)和[this](https://stackoverflow.com/a/11053777/3551786) – Durga

回答

0

你不能选择使用JavaScript文件,而无需人的交互出于安全原因,但您可以在使用隐藏iframe,然后读取文件的这样

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
    <meta http-equiv="X-UA-Compatible" content="ie=edge"> 
 
    <title>Document</title> 
 
</head> 
 
<body> 
 
    <iframe id="iframeId" src="data.text" frameborder="0" style="display:none"></iframe> 
 
    <script> 
 
     function readText() { 
 
     var iframe = document.getElementById('iframeId'); 
 
     var innerDoc = iframe.contentDocument || iframe.contentWindow.document; 
 
     var text = innerDoc.getElementsByTagName('pre')[0].innerText; 
 
     console.log(text); 
 
     } 
 
     setTimeout(function() { 
 
     readText(); 
 
     }, 50); 
 
    </script> 
 
</body> 
 
</html>

内容这将做这项工作,但我不知道这是否是最好的办法

相关问题