Обнаружение локального файла drag'n'drop с HTML/JavaScript

Существует текстовая область HTML. Я в состоянии поймать то событие, когда локальный файл перетащен на текстовую область. Но как получить название перемещаемого файла? (Чтобы быть измененным и вставленным в текстовую область наконец.)

Следующие выражения не возвращают Ни один в этом случае:

event.dataTransfer.files
event.dataTransfer.getData('text/plain')

Я сделал короткий пример для Firefox 3, который в настоящее время является моей целевой платформой.

<script>
function init() {
    document.getElementById('x').addEventListener('drop', onDrop, true)
}
function onDrop(event) {
    var data = event.dataTransfer.getData('text/plain')
    event.preventDefault()
    alert('files: ' + event.dataTransfer.files + ' && data: ' + data + '.')
}
</script>

<body onload='init()'>
<textarea cols=70 rows=20 id='x'></textarea>
11
задан Pavel Vlasov 7 January 2010 в 05:53
поделиться

3 ответа

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

.
-3
ответ дан 3 December 2019 в 09:20
поделиться
[

]Alemjerus корректен, у Вас нет доступа к тому, что Вы ищете.[

] [

]Поведение, о котором Вы упомянули в ответе на его комментарий, является поведением по умолчанию в некоторых браузерах. Например, при использовании тексттареа через стек для этой записи, если я использую Safari и перетаскиваю в него файл, он помещает путь к файлу в тексттареа. С другой стороны, Firefox 3.5 пытается открыть файл с помощью браузера.[

] [

]В основном, функциональность "перетаскивания", которую вы пытаетесь реализовать, это то, что обрабатывается браузером и операционной системой на клиентской машине - вы не можете использовать Javascript для этой цели.[

].
-2
ответ дан 3 December 2019 в 09:20
поделиться

насколько мне известно, вам необходимо получить экземпляр nsIFile , чтобы получить путь к файлу (класс File не предлагает эту функцию).
На этой странице MDC объясняется, как это сделать: https://developer.mozilla.org/En/DragDrop/Recommended_Drag_Types#file .
Обратите внимание, что, хотя он не указан в предыдущей ссылке, получение экземпляра nsIFile требует повышения привилегий (см. Мой ответ на Могу ли я перетаскивать файлы с рабочего стола в папку область в Firefox 3.5 и инициировать загрузку? показать, как это сделать).

0
ответ дан 3 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: