Я экспериментирую с Blueimp jQuery-File-Upload, который, судя по demo выглядит очень многообещающе.
Это очень легко реализовать:
var $uploadButton = $("#fileop-upload");// <input type="file" id="fileop-upload" [etc] />
$uploadButton.fileupload({
url : "//domain/path/to/receive-uploaded-files"
});
Выбранные файлы загружаются в порядке, не обновляя страницу, как ожидалось, но, конечно же, с минимальной конфигурацией, такой как пользователь не получит уведомления. Здесь, где будут полезны обратные вызовы плагинов.
В соответствии с документацией существует два способа определения обратных вызовов. Например, событие add
(которое срабатывает всякий раз, когда файл выбран для загрузки) можно добавить в исходный объект конфигурации следующим образом:
$uploadButton.fileupload({
add : addFileListener,
url : "//domain/path/to/receive-uploaded-files"
});
или, альтернативно:
$uploadButton.bind("fileuploadadd", addFileListener);
Однако я обнаружил, что работает только первый подход, второй ничего не делает.
Еще более любопытно, что никакие другие обратные вызовы, особенно progress
и start
, похоже, не срабатывают, как я их связываю:
$uploadButton.fileupload({
add : addFileListener,
progress : progressListener,
start : startListener,
url : "//domain/path/to/receive-uploaded-files"
});
или
$uploadButton.fileupload({
add : addFileListener,
url : "//domain/path/to/receive-uploaded-files"
});
$uploadButton.bind("fileuploadprogress", progressListener");
$uploadButton.bind("fileuploadstart", startListener");
У меня есть назначенные функции прослушивателя, и код не сообщает о каких-либо ошибках или предупреждениях.
В чем объясняется отказ метода .bind
и почему не срабатывают прослушиватели progress
или start
?