我正在尝试下载文件,同时将其从浏览器拖动到Windows应用程序,例如在Outlook,打印机队列等中。该文件按预期被拖放到桌面或任何其他文件资源管理器位置,但是当我尝试将其放在Windows应用程序(打印机队列(上时,它不起作用。 我使用了 dragstart 事件和 jQuery ajax 同步调用。任何帮助或指示将不胜感激。唯一将使用的浏览器是Chrome。
在这篇文章的底部,您可以看到我想要实现的目标: https://www.html5rocks.com/en/tutorials/casestudies/box_dnd_download/
下面是代码片段:
.HTML:
<a id="{{docs[0].documentID}}" draggable="true" ondragstart="angular.element(this).scope().dragOut(this.id, event)">{{docs[0].fileName}}</a>
.JS:
$scope.dragOut = function(documentId, ev) {
$.ajax({
async: false,
complete: function(response) {
var b64Data = response.responseJSON.getDocumentResponse.content;
var fileName = response.responseJSON.getDocumentResponse.fileName;
var contentType = response.responseJSON.getDocumentResponse.contentType;
ev.dataTransfer.setData("DownloadURL",contentType+":"+fileName+":"+"data:"+contentType+";base64,"+b64Data);
//ev.dataTransfer.setData("DownloadURL", "text/plain:hello.txt:data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D");
},
error: function(xhr) {
if (xhr.status == 404) {
xhr.abort();
}
},
type: 'GET',
url: 'some url',
data: '',
headers: {
withCredentials: true,
'Accept': 'application/json',
'Content-Type': 'application/json',
}
});
};
例如,当我尝试将其放入打印机队列时,我得到加号,但在释放后没有任何反应。所以拖到桌面已经完成了,我正在尝试做的是直接拖到 Windows 应用程序上。
参考: https://www.thecssninja.com/javascript/gmail-dragout
你在这里进入了一些非常严格控制的操作系统功能(处理下降的是操作系统,而不是浏览器(。 但是,由于Google的一些有趣的编码(为gmail功能编写(,以及其他一些开发人员的一些侦查,此页面可能会帮助您找到所需的内容:https://www.thecssninja.com/javascript/gmail-dragout
我确实看到一些讨论提到它适用于其他应用程序,而不仅仅是拖动到桌面。 但我还没有尝试过...