2017-02-09 6 views
0

Ich habe eine Seite mit Tabelle, die hochgeladene Datei (vom Server erhalten) und Upload-Button, sobald ich auf Upload klicken, erstelle GET-Anfrage vom Server, um mir die Upload-Status (der Server kann Feedback geben) Das Problem ist, dass wenn ich eine große Datei hochlade, es nicht mit der Funktion "Status lesen" fortfahren wird.Angular2: Reload Tabelle beim Hochladen großer Datei

Hier ist mein Teil des Codes, die ich benutze:

upload() { 
 
    console.log("Clicked upload"); 
 
    if(this.file.size > 0) { 
 
     let formData:FormData = new FormData(); 
 
     formData.append('csv_file', this.file, this.file.name); 
 
     console.log("uploading file:"); 
 
     var FileName = this.file.name; 
 
     this.startTimer(); 
 
     this._httpRequest.makeFileUpload('csv_upload', formData, FileName) 
 
     .subscribe(MyTests => { 
 
      this.noFile = true; 
 
      this.resetFileName(); 
 
      this.ReadData(); <----------- not running this 
 
     }, 
 
     () => { 
 
      console.log("Error sending file") ; 
 
      this.errorLoading = true; 
 
      } 
 
     ); 
 
    } 
 
    }

ich natürlich nicht die this.ReadData() vor dem Hochladen aufrufen beginnt (Daten lesen ist GET HTTP-Anforderung) ID gibt es einen Weg, um es zu überwinden?

enter image description here

+0

Sie Fehler in der Konsole oder Netzwerk-Registerkarte Haben? – kemsky

+0

kein Fehler, ich nehme an, das Problem ist, dass es die ReadData nicht ausführen kann, bis Abonnement ist abgeschlossen –

+0

Wenn es der Fall ist, sollten Sie ausstehende Anfrage im Netzwerk Registerkarte der Entwickler-Tools sehen – kemsky

Antwort

0

es wird gelöst, indem Sie den Code, um die folgenden

Ändern

upload() { 
 
    console.log("Clicked upload"); 
 
    if(this.file.size > 0) { 
 
     let formData:FormData = new FormData(); 
 
     formData.append('csv_file', this.file, this.file.name); 
 
     var FileName = this.file.name; 
 
     this._httpRequest.makeFileUpload('csv_upload', formData, FileName) 
 
     .subscribe(MyTests => { 
 
      this.isLoading=false; 
 
      this.noFile = true; 
 
      this.resetFileName(); 
 
     }, 
 
      () => { 
 
      this.errorLoading = true; 
 
      this.isLoading=false; 
 
     } 
 
     ); 
 
     this.startTimer(); 
 
     this.ReadData(); 
 
    } 
 
    }

Verwandte Themen