How to drag data (in uri format) from the browser to other applications

using

dataTransfer.setData("DownloadURL", "application/octet-stream:fileName.bin:data:application/octet-stream;base64,eNcoDEdFiLEStuFf");

we can upload a file (written in uri format) to the desktop (or any other folder).

but how to use uri format to drag and drop to other applications. for example, drag uri pdf content from an html page onto Adobe Reader so that it can display the content.

data:application/pdf;base64,JVBERi0xLjUKJbXtrvsKMyAwIG9iago8PCAvTGVuZ3RoIDQgMCBSCiAgIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nGWSQW4DIQxF95zCJ6BgwDDH6BGqkZIsJou295cKxjaMqkSZ/wX+9vPk2wUYn58nfHwFeP46qj4eB9Tm09HgDZhVX4DoKUf1GD0FhFp9Koc5glO0A8m6IKJvIW4++pzNx8B5 RD6SmcwVp3gHSUvnefQta0zgq9IjSF0hkReUOSFbB6WtANEz+7Qj7EU6G+vmS2FNB1PG5EM6nNnMdaf6voTL9GwuEbK6+5JPBy9XEl8v/PuGWPjGtJdaQnkTctv8y8nCIvHjbSykS2j7XpfnpcuG5lhu7E4m7O+S9okv9TXJZBJo/v8kD5dnTRpgiKqv8T/paxwaAyTeKStd59DFV0K52f8FM1RDSF62NlDYXLlKfG78kKjp3Oqix7O/liKsqc9OtTMYUR/QiLo2oq7HdxlcRJhuRJh3Isx3Isx3IvEyskQpkXXR47gT9dZr6o2IGYwo50XUtRF1PQKKEsl1JtIGQqTdJaTdicQbkXh91BuRddHjshP1mdbUGxEzPNyn+wPIlfKYCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iagogICAzOTEKZW5kb2JqCjIgMCBvYmoKPDwKICAgL0V4dEdTdGF0ZSA8PAogICAgICAvYTAgPDwgL0NBIDEgL2NhIDEgPj4KICAgPj4KPj4KZW5kb2JqCjUgMCBvYmoKPDwgL1R5cGUgL1BhZ2UKICAgL1BhcmVudCAxIDAgUgogICAvTWVkaWFCb3ggWyAwIDAgODAgODAgXQogICAvQ29udGVudHMgMyAwIFIKICAgL0dyb3VwIDw8CiAgICAgIC9UeXBlIC9Hcm91cAogICAgICAvUyAvVHJhbnNwYXJlbmN5CiAgICAgIC9JIHRydWUKICAgICAgL0NTIC9EZXZpY2VSR0IKICAgPj4KICAgL1Jlc291cmNlcyAyIDAgUgo+PgplbmRvYmoKMSAwIG9iago8PCAvVHlwZSAvUGFnZXMKICAgL0tpZHMgWyA1IDAgUiBdCiAgIC9Db3VudCAxCj4+CmVuZG9iago2IDAgb2JqCjw8IC9DcmVhdG9yIChjYWlybyAxLjE0LjEgKGh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZykpCiAgIC9Qcm9kdWNlciAoY2Fpcm8gMS4xNC4xIChodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcpKQo+PgplbmRvYmoKNyAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwogICAvUGFnZXMgMSAwIFIKPj4KZW5kb2JqCnhyZWYKMCA4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDc4OSAwMDAwMCBuIAowMDAwMDAwNTA1IDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDQ4MyAwMDAwMCBuIAowMDAwMDAwNTc3IDAwMDAwIG4gCjAwMDAwMDA4NTQgMDAwMDAgbiAKMDAwMDAwMDk4MSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDgKICAgL1Jvb3QgNyAwIFIKICAgL0luZm8gNiAwIFIKPj4Kc3RhcnR4cmVmCjEwMzMKJSVFT0YK

if possible, how to implement?

dataTransfer.setData("application/pdf","content here ");
+4
source share
2 answers

To achieve this:

You must be sure that the client has the application that you want to use. Many users use different applications to open a PDF file.

, , . (, MacOS App Store , , html).

Adobe Reader - , , , .

PDF , . .

+2

API ( ):

-:

<a href="#" id="drag">item</a>
<script type="text/javascript" charset="utf-8">
  document.getElementById('drag').ondragstart = (event) => {
    event.preventDefault()
    ipcRenderer.send('ondragstart', '/path/to/item')
  }
</script>

:

const {ipcMain} = require('electron')
ipcMain.on('ondragstart', (event, filePath) => {
  event.sender.startDrag({
    file: filePath,
    icon: '/path/to/icon.png'
  })
})
+2

Source: https://habr.com/ru/post/1660247/


All Articles