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

Javascript,Typescript,Angular 5-打开并读取文件,javascript,angular,file,typescript,Javascript,Angular,File,Typescript,我正在使用Angular 5,我有一个应用程序,其中我需要将AMP HTML文件作为文本读取。此文件包含在组件中,只能从此组件访问 我希望能够通过提供文件名以只读方式打开该文件 我实际上在寻找这样的东西: let file = open('amp.html'); function readFile(file){ var raw = new XMLHttpRequest(); // create a request raw.open("GET", file, false); //

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

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

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

let file = open('amp.html');
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
}
可能吗?如果没有,我该怎么做才能做到这一点?

如果您正在编写浏览器端JS 你不能只是简单地读取一个文件。JS正在您的浏览器上运行,您需要考虑从何处获取该文件

如果文件位于服务器上,则需要首先通过请求从服务器删除该文件

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

如果您正在编写后端JS
假设您使用的是NodeJS,您可以像使用其他编程语言一样执行文件操作。请查看
fs
模块

如果我理解您的意思正确,您可以将其作为如下文本阅读:

let file = open('amp.html');
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')

谢天谢地,我解决了这个问题。

在什么环境下?从浏览器?NodeJS?Windows Metro应用程序?还有什么?从浏览器中,您无法使用JS访问文件系统,因为它会造成安全问题。如果您使用的是Node,则可以使用内置的
fs
模块读取和写入文件。我使用Angular进行开发,在组件中有一个我想要读取的文件。使用XMLHttpRequest:[弃用]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。此解决方案适用于v5,我可以为您提供指向项目示例的链接。否则请提供更多信息,如模块和组件文件。