0

Я использую плагин загрузки файла jQuery для своего сайта.Загрузка файла jQuery: обнаружение, если выбран тот же файл

После нажатия кнопки «Обзор ...» я вызываю обратный вызов uploadadd. Однако он запускает пользователя EVERYTIME, который добавляет файл. Даже если он добавит SAME FILE.

Мне нужно, чтобы либо обработать обратный вызов uploadadd только один раз для каждого уникального файла, либо получить уникальный идентификатор файла, чтобы я мог хранить его в массиве файлов. В этом случае я могу определить, был ли файл уже выбран.

Я пытался использовать массив данных из функции обратного вызова в:

function (e, data) { } 

, но он содержит только информацию размера файла/имя файла/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, кажется, не имеет такую ​​же функциональность.

Заранее благодарен!

ответ

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

+0

Ну, я пробовал ваш исходный код, но он терпит неудачу, когда я загружаю два разных изображения, но с тем же именем и файлами. – Gregory

+0

Что важнее для вас - два файла с одинаковым именем и размером? Вы всегда можете закодировать на сервере, чтобы поймать тот или иной. Я думаю, что было бы разумнее поймать тот же файл и имя файла на передней панели, но если вы хотите, чтобы люди это делали, тогда, ладно. – taco

Смежные вопросы