我想用 Html5 实现可恢复的上传,一切似乎都正常,除了确定要上传的文件是同一个已经部分上传的文件。理想情况下,我会对生成唯一 id 的文件进行一些客户端散列 - 但是我找不到它的任何工作实现,而且对于大文件(就像我正在处理的那样)来说似乎太慢了。
接下来,我考虑使用文件的路径作为唯一标识符,但我没有看到任何从 API 获取它的方法。文件名,即使考虑到每个用户的文件名也不能是唯一的,因为用户往往有文件的通用名称。任何人都可以想到解决方案吗?
我想用 Html5 实现可恢复的上传,一切似乎都正常,除了确定要上传的文件是同一个已经部分上传的文件。理想情况下,我会对生成唯一 id 的文件进行一些客户端散列 - 但是我找不到它的任何工作实现,而且对于大文件(就像我正在处理的那样)来说似乎太慢了。
接下来,我考虑使用文件的路径作为唯一标识符,但我没有看到任何从 API 获取它的方法。文件名,即使考虑到每个用户的文件名也不能是唯一的,因为用户往往有文件的通用名称。任何人都可以想到解决方案吗?
我猜你最好的选择是一些简单的散列(MD5 在大文件上太慢而无用)。
另一种方法:按文件名命名上传(以及上传多个同名文件时的某种运行编号,例如file-1、file-2、file-3),并检查已上传文件中的随机字节和本地文件。例如:
当然,这可能会导致错误的文件,但散列也是如此。
As mentioned in How to resume a paused or broken file upload at Mozilla Hacks, perhaps you can store the file in the browser using IndexedDB so that you can resume the upload without needing the user to reselect the file.
For a tutorial on how to storing files with IndexedDB, see Storing images and files in IndexedDB.