2011-07-27 100 views
9

我想用Html5實現可恢復的上傳,並且除了確定要上傳的文件與已經部分上傳的文件相同之外,似乎所有東西都能正常工作。理想情況下,我會產生一些客戶端散列的文件,生成唯一的ID - 但我找不到任何工作實現它,它似乎太大的文件(如我正在處理)太慢。使用HTML5文件上傳API的可恢復上傳 -

接下來,我想過使用文件路徑作爲唯一標識符,但我沒有看到任何方式從API中獲取它。文件名,即使考慮到每個用戶的文件名也不能是唯一的,因爲用戶傾向於具有文件的通用名稱。任何人都可以爲此考慮一個解決方案?

回答

1

我想你最好的選擇是一些簡單的哈希(MD5是適當的大文件太慢,以有用)。

另一種方法:通過文件名命名上傳文件(以及上傳多個同名文件時的某種運行編號,例如file-1,file-2,file-3),並檢查隨機字節已經上傳的文件和本地文件。例如:

  1. 查找具有相同的文件名中的所有文件(不包括正在運行的數字編號)
  2. 比較每10 MB 10個字節與本地文件服務器,如果這些字節匹配你可能會感到有些信心不足有關這是正確的文件。

當然,這可能會導致錯誤的文件,但也可以散列。

0

正如Mozilla黑客中的How to resume a paused or broken file upload中提到的,也許您可​​以使用IndexedDB將文件存儲在瀏覽器中,以便您無需用戶重新選擇文件即可恢復上傳。

有關如何使用IndexedDB存儲文件的教程,請參見Storing images and files in IndexedDB

+0

您的想法似乎是繼續上傳而不讓用戶再次選擇文件的唯一方法。但是,我認爲這是不可行的解決方案,當你處理大型文件作爲問題狀態時。有可能還有一些關於最大尺寸的考慮:http://stackoverflow.com/questions/5692820/max-size-in-indexeddb。 – zpon