将下载文件从浏览器应用程序拖放到Windows应用程序,如Outlook,打印机队列



我正在尝试下载文件,同时将其从浏览器拖动到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

我确实看到一些讨论提到它适用于其他应用程序,而不仅仅是拖动到桌面。 但我还没有尝试过...

相关内容

最新更新