Событие клиента 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');
}
}
430   2  

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

    Ничего не найдено.