2013-09-03 11 views
10

Im Web-Browser, ich möchte sha1 Prüfsumme einer großen Datei im lokalen Dateisystem zu berechnen, ohne es an einen Server zu senden.Lesen Sie Datei-Stream mit Javascript in Web-Browser

File API unterstützt, um Dateien von der lokalen Festplatte zu lesen, aber ich denke, es liest die gesamte Datei und legte alle von ihnen in den Speicher. Wenn die Datei größer als Systemspeicher ist, kann ein Problem auftreten.

Streams API scheint nützlich zu sein, um dieses Problem zu lösen, aber ich konnte nicht finden, wie man eine Datei unter Verwendung der API liest.

Gibt es eine Möglichkeit, Dateistream von der lokalen Festplatte mit Javascript im Webbrowser zu lesen?

+0

hmm. XMLHttpRequest scheint in der Lage zu sein, eine Blob-URL von URL.createObjectURL zu öffnen. – npcode

+0

Haben Sie jemals eine Lösung für dieses Problem gefunden? Ich würde es gerne wissen. – monkeymatrix

+0

@monkeymatrix Noch nicht. Ich denke, die APIs sollten verbessert werden, um dieses Problem zu lösen. – npcode

Antwort

5

Die Datei api bietet eine Scheibe Methode, so sollten Sie in der Lage sein, Datenblöcke zu lesen

var blob = file.slice(startingByte, endindByte); 

Die Sha1 Klasse in Googles Crypto API eine Update-Methode bietet, sollten Sie in der Lage sein, die Update-Methode zu füttern mit chunks

Quelle:

+0

Vielen Dank! Es funktioniert sehr gut und ich schreibe hier ein Beispiel: https://gist.github.com/npcode/11282867 – npcode