2013-12-23 3 views
11

Я использую JQuery загрузки файла blueimp и прочиталНачать загрузку всех в Jquery загрузки файла blueimp

$(function() { 
    $('#fileupload').fileupload({ 
     dataType: 'json', 
     done: function (e, data) { 
      $.each(data.result, function (index, file) { 
       $('<p/>').text(file.name).appendTo(document.body); 
      }); 
     }, 
     add:function (e, data) { 
      $("#uploadBtn").off('click').on('click',function() { 
       data.submit(); 
      }); 
     } 
    }); 
}); 

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

+0

нормально загрузка это –

+0

, Что ваш код формы в основном входной секции вы установите для этого параметра <тип = имя файла «» входного = «файлы []» множественным> Вы также смотрели на их детали API? –

+0

Я прочитал API, но не понимаю, потому что английский плохой ... пожалуйста, – user3129040

ответ

8

Ваша проблема заключается в том, что вы отключаете событие click для каждого файла. вы должны сделать это сделать:

done: function (e, data) { 
      $("#uploadBtn").off('click') 
      $.each(data.result, function (index, file) { 
       $('<p/>').text(file.name).appendTo(document.body); 
      }); 
     }, 
add: function (e, data) { 
      $("#uploadBtn").on('click',function() { 
       data.submit(); 
      }); 
     } 
+2

«Точка» здесь заключается в том, что вызов data.submit() в одном файле будет загружать этот один файл, вызвав data.submit() на * все * файлы с одной кнопки (#uploadBtn), он добавит их все в очереди и загружать их по очереди. – Jocie

1

Для загрузки одновременно все файл, который вы выбрали, вы можете добавить опцию autoUpload: так, как это:

$('#fileupload').fileupload({ 
    url: 'url_path', 
    autoUpload: true 
}) 

Ссылка: https://github.com/blueimp/jQuery-File-Upload/wiki/Options

+1

Этот ответ неверен, опция 'autoUpload' запускает загрузку при выборе файла. Вопрос заключается в загрузке нескольких файлов при нажатии кнопки. – Mir

9
var pendingList: []; 

var sendAll: function() { 
     pendingList.forEach(function (data) { data.submit(); }); 
     pendingList = []; 
    }; 

$('#fileupload').fileupload({ 
    url: 'url_path', 
    autoUpload: false, 

    add: function (e, data) { 
      pendingList.push(data); 
     }, 


}); 

<button onclick="sendAll()">Start Upload All</button> 
+0

Это единственный способ увидеть, как это сделать. И это работает. – philw

2

код может быть полезна.

$('#fileupload').fileupload({ 
    dataType: 'json', 
    add: function (e, data) { 
     var that = this; 
     $.blueimp.fileupload.prototype.options.add.call(that, e, data); 
     $("#up_btn").on('click', function() { 
      data.submit(); 
     }); 
    }, 
}); 
+0

извините за отправку файлов на сервер ..... –