2016-05-23 3 views
0

FileReaderonload nicht zum zweiten Mal gefeuert, wenn die gleiche Datei immer noch mit IE11 ausgewählt wurde, aber der Inhalt der Datei geändert wurde, wird alles ausgelöst die Zeit für FireFox, Chrome.FileReader onload wird nicht zum zweiten Versuch in IE 11 gefeuert, nachdem der Inhalt der hochgeladenen Datei geändert wurde

Betriebsdetails

  1. On First Click, es ist alles in Ordnung für alle Browser (IE, aber irgendwann noch ein paar Worte aus der Datei fehlt).
  2. Danach habe ich den Inhalt der Datei geändert.
  3. Und dann klicke ich zweiten Versuch zu btnDownload, Firefox und Chrome immer noch den aktualisierten Inhalt zu lesen. ABER IE ARBEITET NICHT!

.html

<input type="file" id="fileSelect" style="" accept=".csv"> 

<a type="button" class="btn" id="btnDownload" onclick="csvDownload()" 
download> CSV DOWNLOAD </a> 

myjavascript.js

var fileInput = document.getElementById("fileSelect"); //<input type="file" id="fileSelect"> 
var result = ""; 
readFile = function() { 
changeAPInfoName(); 
if (!isFileSupported()) { 
    console.log('The browser does not support the API.'); 

} else { 
    if (fileInput.files.length > 0) { 
     var reader = new FileReader(); 
     reader.onload = function() { 
      result = reader.result; 

      alert("WANT TO GET HERE ,ALTHOUGH FILE CONTENTS ARE CHANGED.(IN IE 11)");    

      document.getElementById('MY_HIDDEN_FIELD').setAttribute('value',result); 
     } 

    reader.readAsText(fileInput.files[0]); 

    reader.onerror = function() { 
     console.log('The file cannot be read.'+fileInput.files[0].fileName); 
     }; 
} 

// EVENT FOR DOWNLOAD BUTTON!!!! 
function csvDownload(){ 
    readFile(); 

    // using ajax to sent info from files and get download file. 
} 

Bitte helfen Sie uns mit folgendem Problem.

  1. Wie kann ich zu der Zeile in reader.onload-Methode, obwohl Dateiinhalte geändert werden. alert("WANT TO GET HERE ,ALTHOUGH FILE CONTENTS ARE CHANGED.(IN IE 11)");.
+0

versuchen reader.addEventListener ("Laden", Funktion() {}); – Jois

+0

heh: '; btnDownload.click();' Wenn das im IE immer noch nicht funktioniert, dann wird IE es nicht einfach machen. Bei den anderen Browsern müssen Sie die Eingabe nicht wirklich neu auffüllen. Wenn Sie die Routine FileReader() erneut aufrufen, wird der Inhalt der neuen Datei extrahiert. In diesen Browsern wird also "; btnDownload.click();" (ohne Das Durcheinander mit dem Klicken der Eingabe) funktioniert magisch wie erwartet, und wenn Sie es abfragen, erstellen Sie eine "watchfile" ... – dandavis

+0

Danke für Ihre Zeiten. :) @Jois: Wo sollte ich diesen Code hinzufügen. 'function() {}' bedeutet ??? – hmmh

Antwort

1

Ersetzen Sie diese

reader.onload = function() { 
     result = reader.result; 

     alert("WANT TO GET HERE ,ALTHOUGH FILE CONTENTS ARE CHANGED.(IN IE 11)");    

     document.getElementById('MY_HIDDEN_FIELD').setAttribute('value',result); 
    } 

mit

reader.addEventListener("load",function(){ 
result = reader.result; 

      alert("WANT TO GET HERE ,ALTHOUGH FILE CONTENTS ARE CHANGED.(IN IE 11)");    

      document.getElementById('MY_HIDDEN_FIELD').setAttribute('value',result); 
}); 

Ich hoffe, dass dies hilfreich ist. Ich war vor dem gleichen Problem, und ich verwendet, um dieses Verfahren, und es funktionierte

Beispiel der Arbeitsfilereader:

<html> 

<head> 



    <script> 


     function read(){ 
      //Select the element containing file 
       var file =document.querySelector('input[type=file]').files[0]; 
     //create a FileReader 
     reader = new FileReader(); 
     //add a listener 
     reader.addEventListener('load',function(){ 

      alert(reader.result); 

     },false); 

     if(file){ 
      //ReadFile 
      reader.readAsDataURL(file);//You can read it in many other forms 

     } 
     } 

    </script> 



    </head> 

    <body> 

    <input type="file" name="myFile" id="myFile" onchange="read()"> 




    </body> 

</html> 

Weitere Informationen über Filereader dieses Dokument finden Sie unter: Link

+0

Danke, Bruder. Aber ich kann nicht mit IE11 dorthin kommen. Kann ich einen Link bekommen, wenn du schon hast? Ich fühle mich der Antwort nahe. :) – hmmh

+0

Hey ich habe einen funktionierenden Filereader-Code hinzugefügt, der auf Ihrem PC läuft. und schau es dir an. Wenn das hilfreich war, vergiss nicht, die Antwort anzukreuzen.Danke – Jois

+0

Und ich überprüfte es in IE es funktioniert für mich – Jois

Verwandte Themen