parameter ist nicht vom Typ 'Blob'
Ich geschrieben habe, der code unten, um anzuzeigen, dass der text aus einer lokalen Datei mithilfe der Datei-API, aber wenn ich auf die Schaltfläche klicke, passiert nichts. Ich bekomme die folgende Fehlermeldung, wenn ich überprüfen Sie das element im browser. Was mache ich falsch?
Uncaught TypeError: Failed to execute 'readAsText' auf 'FileReader': parameter 1 ist nicht vom Typ 'Blob'.
HTML:
<!DOCTYPE html>
<html>
<body>
<p>This example uses the addEventListener() method to attach a click event to a button.</p>
<button id="myBtn">Try it</button>
<pre id="file"></pre>
<script>
document.getElementById("myBtn").addEventListener("click", function(){
var file = "test.txt"
var reader = new FileReader();
document.getElementById('file').innerText = reader.result;
reader.readAsText(file);
});
</script>
</body>
</html>
typeof file == "string" // true
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern Sie die Datei Inhalt in
innerHtml
, müssen Sie zuerst die Datei Lesen.loadend
event feuert nur, wenn die Datei vollständig gelesen, und Sie können den Zugriff auf Ihre Inhalte ohne Fehler:Lesen Sie mehr hier - und hier
blob
ist nicht definiert.Du hast ein paar Fehler.
Die eine, die Fehlermeldung beschwert sich darüber, dass Sie versuchen, wählen Sie eine Datei unter Verwendung einer hart codierten string. Sie nicht bestimmen können, welche Datei geladen wird. Das File API erlaubt nur das Lesen von Dateien, die sind durch den Benutzer ausgewählt über ein File-input.
Das zweite ist, dass Sie versuchen, Lesen Sie die
result
Eigentum der Leser vor Sie haben Lesen Sie die Datei. Sie müssen einen Ereignis-handler zu tun (weil die Datei zu Lesen, wie Ajax ist asynchron).JS:
HTML:
Als die anderen gesagt haben, habe ich gemerkt, dass das onload-Ereignis ist, was fehlt.
Also ich habe ein paar verschiedene Möglichkeiten zeigen, wie man den Leser doch etwas, das man für das erledigen der
readAsText
und eine für das abrufen von Daten als base64-byte-Zeichenkette mitreadAsDataURL
, was besser ist, meiner Meinung nach, da Sie nicht haben, um sorgen über Unicode und andere komische Fragezeichen-Zeichen. Sehen Sie in Aktion, nur klappen Sie den Anruf in den Hörer zwischenuploadFile();
unduploadFile1();
. Und ich zeige ein paar verschiedene Möglichkeiten, wie Sie greifen kann das file-Objekt, sowie:JS:
HTML:
Und normalerweise würde ich denken, Sie sollten in der Lage sein, um genau das tun:
statt dass Sie, die Zuhörer, aber es war nicht die Arbeit in JSFiddle für einige Grund.
https://jsfiddle.net/navyjax2/heLmxegn/1/