将数据URI格式的文件从浏览器拖到桌面

时间:2015-03-30 10:31:00

标签: javascript html5

正如this blog post指出的那样,有一种方法可以通过从浏览器拖放到桌面来下载文件。

我想将数据uri格式的文件(例如“data:application / octet-stream; base64,eNcoDEdFiLEStuFf”)拖到桌面上。由于安全原因,我无法提供服务器下载的完整URL(文件需要在客户端处理)。

当我尝试博客文章示例中给出的内容时,会创建一个内容和名称是当前时间戳的文件:

item.addEventListener("dragstart", function(evt) {
    evt.dataTransfer.setData("DownloadURL", "data:application/octet-stream;base64,eNcoDEdFiLEStuFf");
}

我已经尝试更改格式参数,稍微调整数据格式并预先解除,但没有任何作用,我从来没有将任何数据放到我的桌面上。有没有办法完成我想要的东西,至少在某些浏览器中?

顺便说一句,我们不使用jQuery。因此,如果有一个jQuery解决方案可能会很有趣,但这很可能不适用于我们的项目。

1 个答案:

答案 0 :(得分:3)

据我所知,下载网址应具有以下格式: MIME类型:FILE_NAME:URL。 URL是您的数据URI。 对于你的情况:

item.addEventListener("dragstart", function(evt) {
    evt.dataTransfer.setData("DownloadURL", "application/octet-stream:fileName.bin:data:application/octet-stream;base64,eNcoDEdFiLEStuFf");
}

哪个应该创建fileName.bin文件。

看看http://jsfiddle.net/Andrei_Yanovich/jqym7wdh/ 但看起来它只适用于chrome