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

jQuery File Upload: Detect if same file selected

本文关键字:文件 选择 检测 jQuery 是否      更新时间:2023-09-26

我为我的网站使用 jQuery File Upload 插件。

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

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

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

function (e, data) { }

但它只包含文件大小/文件名/文件类型信息,所以我无法从中创建唯一的哈希,因为两个或多个文件可以具有相同的信息。

这是我的代码:

$('#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似乎没有相同的功能。

提前感谢!

尝试这样的事情:

$('#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 作为哈希。