2011-07-27 16 views
9

Chcę zaimplementować wznawianie przesyłania za pomocą Html5 i wszystko wydaje się działać, z wyjątkiem zidentyfikowania, że ​​plik do przesłania jest taki sam, który został już częściowo przesłany. Idealnie byłoby mieć po stronie klienta mieszanie pliku, który generuje unikalny identyfikator - jednak nie mogłem znaleźć żadnej działającej implementacji i wydaje się zbyt wolne dla dużych plików (tak jak mam do czynienia).Wznawianie przesyłania przy użyciu interfejsu API przesyłania plików HTML5 -

Następnie pomyślałem o użyciu ścieżki do pliku jako unikalnego identyfikatora, ale nie widziałem żadnego sposobu na pobranie go z interfejsu API. nazwa pliku, nawet biorąc pod uwagę nazwę pliku na użytkownika, nie może być unikatowa, ponieważ użytkownicy mają zazwyczaj wspólne nazwy plików. Ktoś może wymyślić rozwiązanie tego problemu?

Odpowiedz

1

Domyślam się, że najlepszym wyborem jest proste hashowanie (MD5 jest zbyt wolne w przypadku dużych plików, aby było użyteczne).

Alternatywnie: Nazwij przesłane pliki według nazwy pliku (i pewnego rodzaju numerowanie bieżące, gdy jest przesyłanych wiele plików o tej samej nazwie, np. Plik-1, plik-2, plik-3) i sprawdź losowe bajty w już przesłany plik i plik lokalny. Na przykład:

  1. Znajdź wszystkie pliki o tej samej nazwie pliku (z wyłączeniem z systemem numeracji liczbowej)
  2. porównania 10 bajtów co 10 MB z serwera z pliku lokalnego, jeśli te bajty pasuje może czuć się na tyle pewnie, o to jest właściwy plik.

Oczywiście może to prowadzić do niewłaściwego pliku, ale może również mieszać.

0

Jak wspomniano w artykule How to resume a paused or broken file upload w witrynie Mozilla Hacks, być może plik można zapisać w przeglądarce, używając IndexedDB, aby można było wznowić przesyłanie bez konieczności ponownego wybierania pliku przez użytkownika.

Aby zapoznać się z samouczkiem dotyczącym przechowywania plików z IndexedDB, zobacz Storing images and files in IndexedDB.

+0

Twój pomysł wydaje się być jedynym sposobem na kontynuowanie przesyłania bez konieczności ponownego wybierania pliku przez użytkownika. Ale myślę, że nie będzie to wykonalne rozwiązanie, gdy masz do czynienia z dużymi plikami, jak stwierdza to pytanie. Mogą również wystąpić pewne względy dotyczące maksymalnego rozmiaru: http://stackoverflow.com/questions/5692820/max-size-in-indexeddb. – zpon

Powiązane problemy