2014-12-03 56 views
0

我使用jQuery文件上傳插件爲我的網站。jQuery文件上傳:檢測是否選擇了相同的文件

用戶按下「瀏覽...」按鈕後,我會調用uploadadd回調函數。 但是,它引發EVERYTIME用戶添加文件。即使他添加了相同的文件。

我需要的是爲每個獨特文件只啓動一次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的文件上傳似乎並不具有相同的功能。

提前致謝!

回答

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作爲散列。

+0

我無法使用file.name + file.size作爲散列,因爲它不安全。如果有兩個名爲「1.jpg」的文件和1024字節的大小? – Gregory 2014-12-03 19:51:54

+0

那麼,我試過你的源代碼,但它失敗時,我上傳兩個不同的圖像,但具有相同的文件名和文件大小。 – Gregory 2014-12-03 19:58:11

+0

哪一個對你更重要 - 兩個具有相同名稱和文件大小的文件?你總是可以在後端編碼來捕獲一個或另一個。我認爲在前端捕獲相同的文件大小和文件名會更有意義,但如果您想讓人們這樣做,那麼,好吧。 – taco 2014-12-03 20:11:22

相關問題