Событие перетаскивания файла в jquery - PullRequest
9 голосов
/ 07 июля 2011

Я пытаюсь найти способ, позволяющий пользователям перетаскивать отдельные файлы в область на моей странице, которая затем может быть отправлена ​​вместе со всеми другими данными моей формы.

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

Есть ли событие в jquery (или что-то подобное), которое я должен искать?

Любая помощь очень ценится!

Ответы [ 2 ]

19 голосов
/ 08 ноября 2012

Я сталкивался с этим вопросом, исследуя некоторые методы загрузки файлов AJAX.

Сегодня я создал скрипт загрузки методом перетаскивания (он все еще находится на стадии проверки концепции, но вот основные шаги, которые я предпринял.

$('drag-target-selector').on('drop', function(event) {

 //stop the browser from opening the file
 event.preventDefault();

 //Now we need to get the files that were dropped
 //The normal method would be to use event.dataTransfer.files
 //but as jquery creates its own event object you ave to access 
 //the browser even through originalEvent.  which looks like this
 var files = event.originalEvent.dataTransfer.files;

 //Use FormData to send the files
 var formData = new FormData();

 //append the files to the formData object
 //if you are using multiple attribute you would loop through 
 //but for this example i will skip that
 formData.append('files', files[0]);

 }

теперь вы можете отправлять formData для обработки php-скриптом или чем-то еще, что вы хотите использовать. Я не использовал jquery в моем скрипте, так как было много проблем с ним, казалось бы, проще использовать регулярныеxhr. Вот этот код

var xhr = new XMLHttpRequest();
    xhr.open('POST', 'upload.php');
    xhr.onload = function() {
            console.log(xhr.responseText);

    };


    xhr.upload.onprogress = function(event) {
            if (event.lengthComputable) {
                    var complete = (event.loaded / event.total * 100 | 0);
                    //updates a <progress> tag to show upload progress
                    $('progress').val(complete);

            }
    };

xhr.send(formData);
6 голосов
/ 07 июля 2011

Plupload - это плагин jQuery для загрузки нескольких файлов, поддерживающий перетаскивание HTML 5 с рабочего стола.Его легко настроить, отметьте http://www.plupload.com/example_queuewidget.php

Если вы не хотите загружать функциональность, проверьте следующее:

( Перетащите с рабочего стола и сохраните в локальном хранилище ) http://jsdo.it/hirose31/7vBK

( jQuery FileDrop - HTML5 Drag 'n Drop Files ) https://github.com/weixiyen/jquery-filedrop

( HTML5 ) http://www.html5rocks.com/en/features/file, http://xquerywebappdev.wordpress.com/2010/05/21/drag-n-drop-from-desktop-jquery-plugin/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...