Можно ли перетащить файл из браузера на рабочий стол, вызвав загрузку? - PullRequest
5 голосов
/ 23 марта 2011

У меня есть приложение, которое хранит файлы и использует drag + drop для их загрузки.Есть ли способ, которым я могу перетащить + падение, чтобы загрузить файл на рабочий стол вместо того, чтобы нажимать «скачать»В основном, противоположность перетаскивания + падение загрузки.

Ответы [ 3 ]

2 голосов
/ 23 апреля 2013

Поддерживается только в Google Chrome.
http://www.html5rocks.com/en/tutorials/dnd/basics/#toc-desktop-dnd-out Например, оно реализовано в Gmail.

Ни один из других браузеров не поддерживает такое поведение.

1 голос
/ 24 марта 2011

Нет, вам нужно будет иметь возможность установить путь загрузки, если ничего другого, что никакие браузеры не позволяют вам делать.Это возможно с плагином, но не с прямым JS.

0 голосов
/ 17 июля 2015

С html5rocks и cssninja все в порядке, но я думаю, что для быстрых ответов это слишком. Вот простой пример использования событий перетаскивания из чего-либо, в том числе для загрузки файлов.

<style>
div { background-color: #eee; border: 1px solid black; padding: 5px; float: left; clear: both; }
</style>
<div id="uiLinkText"           draggable="true">Drag <b>Text</b> to a text editor </div>
<div id="uiLinkHyperlink"      draggable="true">Drag <b>Hyperlink</b> to address bar </div>
<div id="uiLinkUrlDownload"    draggable="true">Drag <b>Url Download</b> to file system </div>
<div id="uiLinkStaticDownload" draggable="true">Drag <b>Static Download</b> to file system </div>
<script>
document.getElementById('uiLinkText').ondragstart = function(event){
  // plain text, for dropping into text editor
  event.dataTransfer.setData('text/plain', 'Go to /4583970/mozhno-li-peretaschit-fail-iz-brauzera-na-rabochii-stol-vyzvav-zagruzku to read about this.');
}
document.getElementById('uiLinkHyperlink').ondragstart = function(event){
  // URL, for dropping into the browser's address bar
  event.dataTransfer.setData('text/uri-list', '/4583970/mozhno-li-peretaschit-fail-iz-brauzera-na-rabochii-stol-vyzvav-zagruzku');
}
document.getElementById('uiLinkUrlDownload').ondragstart = function(event){
  // file download contents, for dropping into a file system
  event.dataTransfer.setData('DownloadURL', 'text/plain:SourceQuestion.html:/4583970/mozhno-li-peretaschit-fail-iz-brauzera-na-rabochii-stol-vyzvav-zagruzku')
}
document.getElementById('uiLinkStaticDownload').ondragstart = function(event){
  var textToWrite = 'file contents here';
  var textFileAsBlob = new Blob([textToWrite], { type: 'text/xml' });
  var url = window.URL.createObjectURL(textFileAsBlob);
  // file download contents, for dropping into a file system
  event.dataTransfer.setData('DownloadURL', 'text/plain:Static.txt:' + url)
}
</script>

Предупреждение. Хотя локально это работало для меня в Chrome локально (в Windows 7), когда я пытался поместить его в jsfiddle для линке, «Статическая загрузка» не работала, а «Загрузка URL» приводила к сбою Google Chrome.

Как и в большинстве случаев перетаскивания, он не работает с MSIE 9, я не пробовал 10+ или Firefox.

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