Мне было рекомендовано использовать загрузку jQuery файла blueimp.
Но я не могу обновить ход отдельных файлов. Я понимаю, как работает общий прогресс (как описано)
progressall: function (e, data)
{
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css('width', progress + '%');
console.log(progress);
}
Как сделать то же самое для каждой отдельной загрузки? Как получить элемент DOM (панель прогресса), связанный с этой конкретной загрузкой? Я думал о создании идентификатора по имени файла и размеру файла, но поскольку пользователи могли загружать один и тот же файл дважды (в разные места назначения), это не работает.
Это моя реализация на данный момент:
$('#fileupload').fileupload(
{
dataType: 'json',
done: function (e, data)
{
$.each(data.result.files, function (index, file)
{
//$('<p/>').text(file.name).appendTo(document.body);
//console.log('done with '+file.name);
});
},
progressall: function (e, data)
{
var progress = parseInt(data.loaded / data.total * 100, 10);
//$('#progress .bar').css('width', progress + '%');
//console.log(progress);
}
}).on('fileuploadadd', function (e, data)
{
$.each(data.files, function (index, file)
{
var node = $('<div class="progressBox"></div>');
node.append('<div class="progressBoxBack"></div>');
node.append('<p><span class="progress-filename">'+file.name+' ('+index+')</span><br /><span class="progress-info">0% 0 ko/s 0 sec left</span></p>');
node.append('<div class="progressBar"><div style="width:23%;"></div></div>');
node.appendTo($('#progressContainer'));
});
});
Может кто-нибудь сказать мне, как или указать мне документацию, которую я не смог найти?
Решение
Чтобы идентифицировать загрузку, вы можете добавить дополнительные параметры к файловому объекту при добавлении. объект файла остается неизменным в событии прогресса (но не в методе done) Итак, на fileuploadadd:
.on('fileuploadadd', function (e, data)
{
$.each(data.files, function (index, file)
{
file.uploadID = 'someidentification' ;
});
});
затем, когда вы обрабатываете прогресс:
progress: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
console.log(data.files[0].uploadID); // returns 'someidentification'
}