javascript - 如何在 JavaScript 中从文件系统中读取文本文件
问题描述
我尝试了不同的方法从 JavaScript 中的本地文件系统读取文本文件并在其中显示文件的内容,alert()
但都无济于事。
方法一
function readTextFile(file) {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file , false);
rawFile.onreadystatechange = function () {
if (rawFile.readyState === 4) {
if (rawFile.status === 200 || rawFile.status == 0) {
var allText = rawFile.response;
document.getElementById("content").innerText = allText;
alert(allText);
}
} else {
alert("Can't read the file");
}
}
rawFile.send(null);
}
readTextFile("FormulaQuestion.txt");
FormulaQuestion.txt文件与 html 文件位于同一目录中,这种方法在浏览器上显示一个空的警报窗口
方法 2 使用 fetch 方法
fetch('FormulaQuestion.txt')
.then(response => response.text())
.then((data) => {
alert(data);
})
这不显示任何东西
使用 JQuery 的方法 3
$.get('FormulaQuestion.txt', function (data) {
alert(data)
}, 'text');
这也不起作用。
我正在构建一个桌面应用程序,它使用 Web 浏览器控件来加载嵌入到应用程序中的 html 文件。应用程序从 sqlite 数据库中读取字符串并将其保存在FormulaQuestion.txt文件中,然后刷新重新加载 html 文件的 WebControl 组件。现在,当重新加载 html 文件时,JavaScript 应该读取文本文件并将其显示在alert()上,一旦警报能够显示文件内容,我会将其设置为段落并删除alert()。请有人帮助我。
解决方案
浏览器在设计上不允许访问 JavaScript 的文件系统,因为允许这种访问将是一个严重的安全问题。
要将 FormulaQuestion.txt 文件提供给您的脚本,您需要将文件托管在服务器上并通过 HTTP 请求(如您的 fetch)请求它。这里的关键是需要一个服务器来通过 HTTP 协议将文件实际传输到您的脚本。
如果在本地工作,则有许多用于运行本地服务器的选项。
- npm 服务模块,
- 万普
- 阿帕奇
您可能还想尝试一些免费层级服务,例如 Vercel 或 Netlify。我相信两者都允许您拖放文件,它会为您托管它。
推荐阅读
- html - 无法居中按钮:我错过了什么?
- javascript - 如何匹配所有 5 位数字但跳过第一个匹配
- c - 测量访问速度时打印到控制台与文件
- objective-c - 在一个接受无限参数的方法中,如何在 Objective-C 中构造一个数组
- java - 为什么我的连接器没有收到主机的消息?
- python-3.x - PngImageFile 类型的对象不是 JSON 可序列化的
- java - 正则表达式仅在子字符串是唯一出现时才匹配,如果子字符串加上其他内容则不匹配
- java - Maven:在“发布:准备”期间,如何在“安装”阶段之后运行一些测试?
- php - 如何防止 PHP 从 json 字符串中删除花括号?
- reactjs - 防止点击下一步,直到所有输入都填入reactjs?