【发布时间】:2016-11-28 11:28:26
【问题描述】:
我正在尝试在 Angular 2 ts (2.2.1) 中创建一个上传表单,它允许上传例如CSV 文件,但不是将文件直接发送到 http 服务,我希望文件首先在浏览器中进行验证。
到目前为止,我已经可以使用以下代码上传文件并在控制台中打印:
-
文件上传的HTML输入
<input type="file" (change)="changeListener($event)" #input /> -
在我的 Angular 组件中,我设置了 eventListner 和文件阅读器。
export class UploadComponent { public fileString; constructor() { this.fileString; } changeListener($event): void { this.readThis($event.target); } readThis(inputValue: any): void { var file: File = inputValue.files[0]; var myReader: FileReader = new FileReader(); var fileType = inputValue.parentElement.id; myReader.onloadend = function (e) { //myReader.result is a String of the uploaded file console.log(myReader.result); //fileString = myReader.result would not work, //because it is not in the scope of the callback } myReader.readAsText(file); } }
到目前为止,这段代码运行良好。
但是我还没有找到一种方法来存储来自阅读器的数据,让我可以使用我的角度组件访问它。
myReader.onloadend() 回调函数无权访问组件的变量。有没有办法注入这些变量?
如何将读取的数据放入组件中的fileString 变量中?
【问题讨论】:
-
答案(stackoverflow.com/a/40843316/1908296)正确和准确的问题需要但是我想通知这个答案会将文件阅读器的结果作为二进制字符串而不是原始字符串值。
-
检查这个问题stackoverflow.com/q/47151035/1908296,如果需要加载原始CSV文件内容
标签: javascript angular typescript filereader