Как лучше всего отменить текущую загрузку с помощью filepicker.io?

Я использую filepicker.makeDropPane, чтобы экспериментировать с некоторыми простыми загрузками. Одна вещь, которую я не могу найти в документах в веб-документации на filepicker.io, — это способ отмены загрузка, которая выполняется.

Интуитивно я чувствую, что функции onStart следует передать дополнительный параметр. Объект, представляющий загрузку, имеет функцию cancel(), которая при вызове немедленно отменяет загрузку файла. Что-то вроде этого, похоже, недоступно.


person cilphex    schedule 17.10.2012    source источник


Ответы (2)


на самом деле у нас пока нет этой функции, но это имеет смысл. Я посмотрю на добавление чего-то в этом направлении и дам вам знать

person brettcvz    schedule 18.10.2012
comment
Спасибо. То, что я опубликовал, было просто мыслью, не обязательно идеальным способом сделать это. Рад видеть, что вы, ребята, реализуете. - person cilphex; 18.10.2012
comment
Я согласен. Мы вызываем средство выбора файлов из встроенного диалогового окна div, которое можно отменить. Необходимо защитить от асинхронного ответа, возвращающегося позже, когда диалоговое окно закрыто. - person Yoshi; 04.06.2013

Вот уродливый хак, который я придумал для защиты от нежелательных возвращенных файлов, а также от некоторых других причудливых вещей, связанных с прогрессом, несколькими файлами и т. Д. Вы определенно хотите использовать статический js-файл, чтобы он не изменился на вас и не сломал это.

Используйте это в своем обработчике прогресса:

var event = event || window.event;

// For firefox, go and grab the XHR progress event object.                                                                                                                                                                                
if (typeof event == 'undefined' || event == null) {
    if (typeof arguments.callee.caller.arguments[0] == 'object') {
        event = arguments.callee.caller.arguments[0];
    }
    else {
        event = arguments.callee.caller.arguments.callee.caller.arguments.callee.caller.arguments[0];
    }
}

var sUploadId;

     if (event.type.toLowerCase() == 'progress') {
        // if we haven't already tagged this XHR object (one per file), tag it now                                                                                                                                                 
        // if we receive further progress from this file, it will already have been tagged                                                                                                                                                

        if (!('id' in event.currentTarget)) {
            sUploadId = goUploadProgress.files.length;
            event.currentTarget.id = sUploadId;
            goUploadProgress.files.push({id: sUploadId, total:event.total});
        }
        else {
            sUploadId = event.currentTarget.id;
        }

        // get the loaded bytes for this file                                                                                                                                                                                             
        goUploadProgress.files[sUploadId].loaded = event.loaded;
    }
    else {
        // ignore readystatechange events                                                                                                                                                                                                  
        return;
    }

Я изменил это, чтобы иметь больше смысла для этого контекста, поэтому, возможно, я сделал логическую ошибку, но суть такова. Вы можете получить событие в Firefox, просмотрев стек вызовов, и вы можете добавить идентификатор к объекту загрузки XHR каждого файла, который будет существовать до его завершения.

Повторяю, это взлом! Не верь, что не сломается.

person bearfriend    schedule 18.12.2013