2013-09-03 29 views
10

W przeglądarce internetowej chcę obliczyć sumę kontrolną Sha1 ogromnego pliku w lokalnym systemie plików bez wysyłania go na serwer.Czytaj strumień plików za pomocą javascript w przeglądarce internetowej

File API obsługuje odczytywanie plików z dysku lokalnego, ale myślę, że odczytuje cały plik i umieszcza je wszystkie w pamięci. Może wystąpić problem, jeśli plik jest większy niż pamięć systemowa.

Streams API wydaje się być przydatna do rozwiązania tego problemu, ale nie mogłem znaleźć sposobu, aby odczytać plik za pomocą interfejsu API.

Czy istnieje sposób odczytu strumienia plików z dysku lokalnego przy użyciu javascript w przeglądarce?

+0

hmm. XMLHttpRequest wydaje się być w stanie otworzyć URL blob z URL.createObjectURL. – npcode

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Chciałbym wiedzieć to samo. – monkeymatrix

+0

@monkeymatrix Jeszcze nie. Uważam, że interfejsy API powinny zostać ulepszone, aby rozwiązać ten problem. – npcode

Odpowiedz

5

Plik API dostarcza sposobu kawałek, więc powinieneś być w stanie odczytać fragmenty danych

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

Klasa SHA1 w crypto api google zapewnia metodę aktualizacji, powinieneś być w stanie nakarmić metody aktualizacji ze swoimi kawałkami

źródło:

+0

Wielkie dzięki! Działa bardzo dobrze i piszę przykład tutaj: https://gist.github.com/npcode/11282867 – npcode