jQuery文件上传:检测是否选择了相同的文件

时间:2014-12-03 19:23:55

标签: javascript jquery file-upload uploadify jquery-file-upload

我为我的网站使用jQuery文件上传插件。

用户按下"浏览..."按钮我调用uploadadd回调。 但是,它会触发EVERYTIME用户添加文件。即使他添加了相同的文件。

我需要的是每个唯一文件只触发一次uploadadd回调,或者获取文件的唯一标识符,以便将其存储在一个文件数组中。在这种情况下,我可以检测文件是否已被选中。

我尝试使用回调功能的数据数组:

function (e, data) { }

但它只包含filesize / filename / filetype信息,因此我无法从中创建唯一的哈希,因为两个或多个文件可以具有相同的信息。

这是我的代码:

$('#fileupload').fileupload({
    url: "/upload/",
    dataType: 'json',
    autoUpload: false,
    add: function (e, data) {
        console.log(data.files[0]);
        qcount += 1;
        $('#select-button').text(qcount + ' files');

        data.submit();
    });
});

在Uploadify插件中,我可以使用onAddQueueItem回调,但jQuery-File-Upload似乎没有相同的功能。

提前致谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

$('#fileupload').fileupload({
    url: "/upload/",
    dataType: 'json',
    autoUpload: false,
    add: function (e, data) {
        data.files = $.map(data.files, function(file,i){
            if ($.inArray(file.name,currentfiles) >= 0) { 
                alert("file exists");
                return null; 
            }
            return file;
        });

        console.log(data.files[0]);
        qcount += 1;
        $('#select-button').text(qcount + ' files');

        data.submit();
    });
});

您不必使用file.name。您可以使用file.name + file.size作为哈希值。