Подтвердить что ты не робот

Как использовать событие jQuery drop для загрузки файлов, перетаскиваемых с рабочего стола?

Можно ли использовать событие jQuery drop для перетаскивания файлов с рабочего стола?

Если да, то как мне получить данные об отброшенных файлах?

4b9b3361

Ответ 1

Это немного грязно (нужно обработать как минимум 3 события), но возможно.

Во-первых, вам нужно добавить обработчики событий для dragover и dragenter и предотвратить действия по умолчанию для этих событий, например:

$('#div').on(
    'dragover',
    function(e) {
        e.preventDefault();
        e.stopPropagation();
    }
)
$('#div').on(
    'dragenter',
    function(e) {
        e.preventDefault();
        e.stopPropagation();
    }
)

На самом деле важно вызывать preventDefault для этих событий, в противном случае некоторые браузеры могут никогда не вызывать событие drop.

Затем вы можете добавить обработчик отбрасывания и получить доступ к e.originalEvent.dataTransfer.files файлам с помощью e.originalEvent.dataTransfer.files:

$('#div').on(
    'drop',
    function(e){
        if(e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files.length) {
            e.preventDefault();
            e.stopPropagation();
            /*UPLOAD FILES HERE*/
            upload(e.originalEvent.dataTransfer.files);
        }
    }
);

Теперь вы можете перетаскивать файлы с рабочего стола/проводника/поиска в div и получать к ним доступ.

http://jsfiddle.net/fSA4N/5/