如何查看两个File对象是否使用JavaScript引用同一个物理文件?

时间:2014-01-27 20:22:42

标签: javascript html5 file-upload

我正在使用表单上传多个文件。我有以下内容:

<input id="files" name="files[]" type="file" value="Add files..." multiple/>
<input id="addfiles" value="Add" type="button"/>

$("#addfiles").click(function() {
    f = $("#files").prop("files");
    for (index = 0; index < f.length; ++index) {
        if (!is_in_queue(f[index]))
        {
            queue.push(f[index]);
[...]

如何比较两个File个对象?我需要is_in_queue的这种比较。不幸的是,我看到只设置了name属性,但没有设置路径(它是空的)。这意味着对于在不同路径中具有相同名称的文件,基于name的比较将失败。

更新:理想情况下,我希望客户端完成此操作。用户需要在上传之前为每个上传的文件设置一些参数,我希望避免重复这个工作量。

1 个答案:

答案 0 :(得分:0)

我认为这样做的最佳方法是同时上传用户想要上传的所有文件。当然,检查双打应该在服务器端的应用程序的后端逻辑上完成。

此处为您提供的链接:http://www.html5rocks.com/en/tutorials/file/dndfiles/

修改 正如@ ikaros45所说,最好的办法是检查文件的MD5哈希值。但是这些都保存在数据库的服务器端,因此您需要请求它们或者有一个处理程序来检查要上载的文件的MD5哈希是否已经存在。 以下是该问题的另一个链接:How to calculate md5 hash of a file using javascript 这就是你可以为客户端做的事情。由于JavaScript非常有限,因此很难在浏览器中执行与文件相关的操作。此外,通过使用FileAPI,您只能将Web应用程序限制为最新的浏览器版本。