2013-07-17 2 views
1

В прекрасном загрузчике проверка загрузки файлов работает на каждой файловой основе. Я хотел бы проверить всю партию выбранного файла. предположим, что я выбрал 10 файлов, размер всей партии - 10 МБ, и у меня есть предел расширения до 5 МБ.Проверка загрузки файлов для всей партии выбранного файла

Есть ли способ получить общий размер выбранных мух. Я хочу сделать это в совместимых браузерах Html5, а также в браузерах Html4, то есть в IE.

+0

Покажите нам, что вы сделали до сих пор в попытке решить эту проблему. Кроме того, на каком языке (языках) будет выполняться этот проект? –

+0

Это плагин для загрузки файлов html, написанный на javascript. – user2477005

+0

Комментарии: просмотрите теги перед комментариями. Это вопрос для библиотеки Fine-Uploader. –

ответ

0

Во-первых, нет способа сделать это в IE9 или старше, так как требуется поддержка API файлов (и не присутствует в IE9 и старше). Без поддержки API файлов абсолютно невозможно определить размер файла на стороне клиента.

При этом я могу предоставить решение для вас во всех других браузерах. Ключом к этому является использование onValidateBatchcallback. Например:

var maxAllowedBatchSize = 5000000; 

$('#uploadContainer').fineUploader({ 
    request: { 
     endpoint: '/my/endpoint' 
    } 
)} 
    .on('validateBatch', function(event, fileOrBlobDataArray) { 
     var totalSize = 0; 

     $.each(fileOrBlobDataArray, function(idx, fileOrBlobData) { 
      totalSize += fileOrBlobData.size; 
     }); 

     // Tell Fine Uploader to ignore the entire batch of files 
     // if the batch exceeds the total size limit. 
     if (totalSize > maxAllowedBatchSize) { 
      return false;  
     } 
    }); 

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

+0

Спасибо Ray за решение. Я реализую код следующим образом: – user2477005

+0

Спасибо Ray за решение Я не получаю обратный вызов, что может быть неправильным manualuploader.on ('validatebatch', function (fileOrBlobDataArray) { // alert ('hi'); var totalSize = 0; qq.each (fileOrBlobDataArray, функция (IDX, fileOrBlobData) { TotalSize + = fileOrBlobData.size; });. // если партия превышает общий предельный размер , если (TotalSize> maxAllowedBatchSize) { return false; } }); – user2477005

+0

Случай важен для названий событий. Имя события - «validateBatch», а не «validatebatch». Кроме того, первым параметром, переданным всем обработчикам событий при использовании плагина jQuery, является «событие». Вы используете jQuery? Дайте мне знать, и я обновлю свой ответ и соответствующие теги. –