我想读一个文件作为字符串.有一个文件阅读器,但它生成一个文本文件.我怎么把它转换成字符串,或者有没有办法把文件读成字符串?下面是我从文件到文本读取的代码.

upDxf(event : any){
   let file:File = event.target.files[0];
   let fileReader = new FileReader();

   fileReader.onload = (e) => {
     console.log(fileReader.result);
   }
   var text = fileReader.readAsText(file);
   console.log(text);
}

我需要字符串来使用它的DXF解析器从https://www.npmjs.com/package/dxf-parser.

推荐答案

.readAsText已经将文件数据作为文本字符串读取. 但这里的问题是FileReader是异步的,所以当您记录它时,它是未定义的.

您需要在onload方法中将值赋给text,然后从那里将其传递给解析器.

例如:

let text;

fileReader.onload = (e) => {

    console.log(fileReader.result);

    // now assign text
    text = fileReader.result as string;

    // send it to parser
    // this.parse(text);
}

// text is undefined here..
fileReader.readAsText(file);

或者,您可以将.text()与Async/AWait配合使用,并同步获得结果:

async upDxf(event: any) {

    let file: File = event.target.files[0];

    // block until it's done
    const text = await file.text();
    
    // result
    console.log('text: ', text);
    //this.parse(text);
}

Angular相关问答推荐

Angular ngModel双向数据绑定不适用于表单中的Select元素

如何在每次Angular 编译之前执行脚本(esbuild)

图像未显示在视图屏幕上-Angular 投影

[NullInjectorError]:R3InjectorError(Standalone[_AppComponent])[]:NullInjectorError:No provider for _HttpClient

截获火灾前调用公共接口

无法匹配任何路由.URL段:';英雄';

ANGLING:ExpressionChangedAfterChecked在嵌套形式中由子项添加验证器

Angular 显示来自文字数组的SVG路径

Angular 17水化-POST请求同时触发客户端/服务器端,而GET请求仅触发服务器端?

ION标签-从子对象中加载页,保留父对象的S内容

崩溃Angular项目Docker容器

Angular将文件作为字符串读取给dxf解析器

Angular MSAL - 对 Bearer 令牌和 AUD 属性的怀疑

PrimeNG:如何以编程方式更改分页器中的选定页面?

Angular 13 中