Javascript FileReaderは最初の試行で機能しましたが、現在は機能していません(コード行は変更されていません)

マーティン・ファイフホーファー

そこで、テキストファイルをアップロードするためのhtml入力要素を実装しました。次に、テキストの内容を読み取り、文字列配列に保存したいと思いました。これを行うために(私はAngular 2を使用しています)、readAsText関数を使用するためにfilereadernpmパッケージをインポートしました今、私が初めてそれを試したとき、それはうまくいきました!それはテキストに印刷され、ファイルからコンソールに読み込まれました。

次に、console.log(line)関数を削除しましたそれ以降、次のエラーが発生します:「ファイルとして読み取ることができません:{}」console.log(line)関数を読み取ろうとしましたが、同じエラーが発生し続けます。ファイルリーダーが使用する前にファイル変数をログに記録し、ファイルに関する情報を取得しました。また、別のファイルを試し、入力をクリアしました(el.nativeElement.firstElementChild.value = null)が、それでも同じエラーです。

html:

<input hidden="true" type="file" id="fileUpload" (change)="SendSurveyDataToBackend()" [attr.multipleFiles]="multipleFiles ? true : null">

js:

SendSurveyDataToBackend(){
    let inputEl = this.el.nativeElement.firstElementChild; 
    document.getElementById('csvUpload').style.color = "white";
    if (inputEl.files.length == 0 || inputEl.files.length > 1) {
        document.getElementById('csvUpload').style.color = "red";
        return;  
    }

    let file = null;
    file = inputEl.files[0];
    let FileReader = require('filereader');
    const reader = new FileReader();

    let surveyDataSetsAsStrings:string[] = [];        
    let surveyDataSets:SurveyData[] = [];

    reader.onload = (event) => {
        const file = event.target.result;
        const allLines = file.split(/\r\n|\n/);
        // Reading line by line
        allLines.map((line) => {
            surveyDataSetsAsStrings.push(line.toString)
            console.log(line);
        });
    };

    reader.onerror = (evt) => {
        alert(evt.target.error.name);
    };

    reader.readAsText(file);    

    for(var i = 0; i < surveyDataSetsAsStrings.length; i++){
        surveyDataSets[i].Id = parseInt(surveyDataSetsAsStrings[i].substring(0,2));
        surveyDataSets[i].Date = new Date(surveyDataSetsAsStrings[i].substring(42,61));
        surveyDataSets[i].PlayerCode = (surveyDataSetsAsStrings[i].substring(63,73));            
    }
    this.el.nativeElement.firstElementChild.files = null; 
    this.el.nativeElement.firstElementChild.value = null; 

    this.dataService.updateSurveyParticipants(surveyDataSets).subscribe( response => {
        if(response == 'success') // Http OK
            window.location.reload();
        else
        document.getElementById('csvUpload').style.color = "red";
    });   
}

これを引き起こしている可能性のあるアイデアはありますか?

マーティン・ファイフホーファー

次のコード行を削除するだけでうまくいきました...

let FileReader = require('filereader');

私の悪い...それが機能した後にコードの行を変更したようです...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ