Plupload Автоматически загружать файлы при добавлении файлов
Когда файлы добавлены, я хочу начать процесс загрузки автоматически. Я назвал функцию start в конце FilesAdded, но она не запускает загрузку.
uploader.bind('FilesAdded', function(up, files) {
var str = "";
for (var i in files) {
str += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';
}
$('#filelist').html(str);
up.refresh();
up.start();
});
Вот мой код создания
var uploader = new plupload.Uploader({
runtimes: 'html5,flash,silverlight',
autostart : true,
url: '<%= images_path %>',
max_file_size: '10mb',
multipart: true,
browse_button: "pickfiles",
container: "the-uploader",
drop_element : "drop-area",
multipart_params: {
'_http_accept': 'application/javascript',
'<%=request_forgery_protection_token%>': '<%=form_authenticity_token%>',
'<%=request.session_options[:key]%>': '<%=request.session_options[:id]%>'
},
filters: [
{title: "Images", extensions: "avi,jpg,jpeg,png,zip"}
],
});
Ответы
Ответ 1
Добавление up.start()
в ваш FilesAdded bind должно начать загрузку при добавлении файла. Я пошел по пути вызова моего загрузчика так (у меня были проблемы с этим, как вы его называете):
$(function() {
// Setup html5 version
$("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
url : 'upload.php',
max_file_size : '10mb',
chunk_size : '1mb',
unique_names : true,
dragdrop : true,
multiple_queues : false,
multi_selection : false,
max_file_count : 1,
// Specify what files to browse for
filters : [
{title : "Text files", extensions : "txt"}
],
init : {
FilesAdded: function(up, files) {
up.start();
},
UploadComplete: function(up, files) {
$.each(files, function(i, file) {
// Do stuff with the file. There will only be one file as it uploaded straight after adding!
});
}
}
});
});
Ответ 2
"Убедитесь, что вы связываете его после инициализации, так как он связывает обработчики по умолчанию".
Итак, ваш код:
uploader.bind('FilesAdded', function(up, files) {...});
после
uploader.init();
дополнительная информация
Ответ 3
Для меня это не сработало вашей версии, но работало:
FilesAdded: function(up, files) {
setTimeout(function () { up.start(); }, 100);
},
Итак, установите таймер после 100 мс, чтобы запустить старт.
Я использую версию jquery ui во время тестирования и получил эту ошибку:
g("#" + l.id).position() is null
/js/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js
Ответ 4
Я тоже хотел получить то же самое и нашел ниже способ сделать это.
Новый способ автоматического запуска загрузки файлов после добавления файла - это просто установить значение true для свойства autostart
, как показано ниже
$("#uploader").plupload({
.....
autostart: true,
.....
});
Ответ 5
Просто запускайте кнопку "Начать загрузку" таким образом
FilesAdded: function(up, files) {
$('#fileupload_start').click();
},
Это приведет к загрузке файла без ожидания 100 мс.