2013-05-09 7 views
3

сказать, что я хочу, чтобы загрузить несколько файлов сразу, что-то я могу сделать при установке несколько опции верно:FineUploader загружать один и тот же файл несколько раз одновременно

var myUploader = new qq.FineUploader({ 
    element: $('#test')[0], 
    multiple: true, 
    request: { endpoint: 'path/to/master/server/php/' }, 
    autoUpload: false, 
}); 

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

Есть ли способ предотвратить использование FineUploader для этого?

Заранее спасибо

+1

Я добавил ответ. Кроме того, убедитесь, что в вашем коде нет никаких запятых. IE7 будет barf, если он столкнется с ними. –

+0

@RayNicholus спасибо за ваш ответ Рэй. Я хочу, чтобы вы знали, что я обновил библиотеку до последней версии, и, как вы сказали, все работает отлично (за исключением некоторых правил CSS, которые я изменил, хе-хе). До сих пор у меня есть что-то вроде этого: http://jsfiddle.net/cotoadvance/6NgqE/ Он отлично работает, но я получаю эту ошибку: 'Uncaught TypeError: Невозможно преобразовать null в объект', когда я использую' reset 'функция. –

+1

Jose - проблема возникает, когда Fine Uploader пытается завершить обработку загрузки после возврата обработчика, но ваш обработчик вызывает 'reset', который уничтожает любое состояние, связанное с этим файлом. Можете ли вы [открыть отчет об ошибке] (https://github.com/Widen/fine-uploader/issues/new) в проекте Github, чтобы мы могли обсудить это немного больше? Ошибка не должна вызывать каких-либо проблем для вас, но ее следует решать. Я хотел бы узнать больше о том, почему вы также вызываете «reset». Также, пожалуйста, отметьте мой ответ как «принятый», если он вам поможет. –

ответ

3

я был бы осторожен объявить файл дубликат просто на основе имени. По крайней мере, вы должны учитывать размер. Хотя это невозможно в IE9 и старше, поскольку мы не можем определить размер файла на стороне клиента в этих браузерах. Просто для простоты, давайте использовать имя файла исключительно ...

Один из способов - поддерживать массив имен файлов, переданных загрузчику. Вы можете добавить этот список в свой обработчик onSubmitted. Вы можете внести свой вклад в обработчик onValidate, который отклонит файл, если он уже существует в массиве. Ваш код будет выглядеть примерно так:

var filenames = []; 
var myUploader = new qq.FineUploader({ 
    element: $('#test')[0], 
    multiple: true, 
    request: { endpoint: 'path/to/master/server/php/' }, 
    autoUpload: false, 
    callbacks: { 
     onSubmitted: function(id, name) { 
      filenames.push(name); 
     }, 
     onValidate: function(fileData) { 
      return qq.indexOf(filenames, fileData.name) < 0; 
     } 
    } 
}); 

Кроме того, только для пинков, почему бы не просто использовать JQuery Fine добавивший его плагин, так как вы, кажется, уже с помощью JQuery в вашем проекте? Вышеприведенный пример переписан с использованием подключаемого модуля jQuery ниже:

var filenames = []; 
$('#test').fineUploader({ 
    multiple: true, 
    request: { endpoint: 'path/to/master/server/php/' }, 
    autoUpload: false 
}) 
    .on("submitted", function(event, id, name) { 
     filenames.push(name);  
    }) 
    .on("validate", function(event, fileData) { 
     return $.inArray(fileData.name, filenames) < 0; 
    }); 
+0

@ jk-jk Я не уверен, кто отклонил ваше редактирование (это был не я), но это было совершенно правильно, поэтому я отредактировал сообщение в соответствии с вашим предлагаемым редактированием (я также добавил выделение синтаксиса). Спасибо, что поймали это (изменили параметры '$ .inArray'). –

+0

Этот код отменяет все файлы, если один из них дублируется. Как я могу отменить только дублированный файл, но разрешить загрузку других выбранных файлов в обычном режиме? –

+0

@ Alph.Dev Этот код будет отменять только дубликаты файлов. –

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