Событие клиента FineUploader после завершения всех загрузок
Я реализовал FineUploader и хотел бы подключить Мой клиентский скрипт к событию после загрузки всех файлов. Разве это возможно?
Далее следует моя реализация. Просто хочу знать, правильное ли это направление.
function init() {
var uploader = new qq.FineUploader({
element: document.getElementById('button-selectfiles'),
request: {
endpoint: '/Up/UploadFile'
},
callbacks: {
onStatusChange: onFileUploadStatusChange
}
});
};
var uploads = 0;
function onFileUploadStatusChange(id, oldStatus, newStatus) {
console.log(newStatus);
if (newStatus === 'submitting') {
uploads++;
}
if (newStatus === 'upload successful' || newStatus === 'upload failed') {
uploads--;
}
if (uploads === 0) {
console.log('done');
}
}
2 ответов:
onComplete- используется для одной загрузки файла, если вы используете несколько файлов загрузки просто использоватьonAllComplete:callbacks: { onAllComplete: function() { alert('done') } }
Ваша функция
onFileUploadStatusChangeне может проверить наличие отмененных файлов.Проверить, все ли файлы были загружены, можно с помощью методов API:
getInProgressиgetUploads. Если выполняется 0 загрузок и 0 неудачных загрузок, то можно смело считать, что все файлы были загружены. Вы можете удалить проверку неудачных загрузок, если вы все еще хотите продолжить, если какая-либо загрузка не удалась. Мы проверяем, выполняются ли эти условия во время обратных вызововonStatusChangeиonComplete. СобытиеonStatusChangeдолжно проверьте только, был ли файл отменен, потому что это может означать, что все другие файлы завершены, и, таким образом, пользовательское действие может быть завершено.Примечание: я адаптировал свой ответ 16989719 чтобы работать на не-jQuery Fine Uploader.
function init() { var uploader; function check_done() { // Alert the user when all uploads are completed. // You probably want to execute a different action though. if (allUploadsCompleted() === true) { window.alert('All files uploaded'); } } function allUploadsCompleted() { // If and only if all of Fine Uploader's uploads are in a state of // completion will this function fire the provided callback. // If there are 0 uploads in progress... if (uploader.getInProgress() === 0) { var failedUploads = uploader.getUploads({ status: qq.status.UPLOAD_FAILED }); // ... and none have failed if (failedUploads.length === 0) { // They all have completed. return true; } } return false; } uploader = new qq.FineUploader({ element: document.getElementById('button-selectfiles'), request: { endpoint: '/Up/UploadFile' }, callbacks: { onStatusChange: function (id, oldStatus, newStatus) { // This will check to see if a file that has been cancelled // would equate to all uploads being 'completed'. if (newStatus === qq.status.CANCELLED) { check_done(); } }, onComplete: check_done } }); };
Comments