网站搜索

Javascript、Typescript、Angular 5 - 打开并读取文件


我正在使用 Angular 5,我有一个应用程序,需要将 AMP HTML 文件作为文本读取。这个文件包含在一个组件中,并且应该只从这个组件中访问。

我希望能够通过提供文件名以只读方式打开该文件。

我实际上正在寻找像这样的东西:

let file = open('amp.html');

这可能吗?如果不可能,我该如何做到这一点?

答案#1

如果你在编写浏览器端的 JS

你不能只是简单地读取一个文件。JS 在你的浏览器中运行,你需要考虑你从哪里获取那个文件。

如果文件在服务器上,你需要先通过向服务器发出请求来获取该文件。

如果你正在读取用户计算机上的文件,你将使用浏览器上的文件 API 来允许用户选择该文件。

如果你在写后端JS

假设你正在使用 NodeJS,你可以像使用其他编程语言一样进行文件操作。查看 fs 模块

答案#2

如果我理解正确,你可以像这样把它当作文本来阅读:

function readFile(file){
    var raw = new XMLHttpRequest(); // create a request
    raw.open("GET", file, false); // open file
    raw.onreadystatechange = function (){ // file is ready to read
        if(raw.readyState === 4){
            if(raw.status === 200 || raw.status == 0){
                var allText = raw.responseText;
                alert(allText); // can be also console.logged, of course.
            }
        }
    }
    raw.send(null); // return control
}

用法:

readFile('link.html')

多亏了这个问题,我解决了这个问题。