【问题标题】:Trigger file download by pure javascript纯javascript触发文件下载
【发布时间】:2012-12-16 15:39:59
【问题描述】:

将有没有服务器端请求。所以它必须由纯JS来完成。例如我有这个代码。

function downloadFile(data, name, mime){
    /// what to put here?
}
var txt="Hello world";
var filename="sample.txt";
var mime="text/plain";
downloadFile(txt,filename, mime);

我知道a library 完全在浏览器中完成它而不发送任何http 请求。 如果我发送请求,我可以通过服务器端脚本来完成。只需获取数据并使用一些标头即可触发文件下载。但我想用纯 JS 来做。没有服务器端请求。

【问题讨论】:

  • 使用数据 URL 怎么样?它需要在IE8中工作吗?
  • 你试过看看图书馆是怎么做的吗?
  • @Jan 我在Wiki 上有很多东西。我想我得到了答案
  • “无服务器端请求”是什么意思。这是否意味着您不想向服务器发出任何请求?此外,如果您找到了答案,最好与他人分享。

标签: javascript http download mime


【解决方案1】:

您链接到的库使用https://github.com/dcneiner/Downloadify/,它使用 Flash 来确保跨浏览器兼容性。如果您不需要确保它适用于所有浏览器,则可以使用数据 uri 和纯 javascript 实现,如下所示:https://gist.github.com/syntagmatic/2202660。您还可以查看新的 HTML5 文件 API:http://www.html5rocks.com/en/tutorials/file/filesystem/#toc-filesystemurls

【讨论】:

  • 如果 flash 未安装或不允许运行,那么 Downloadify 也会下降。 HTML5 File Api 仅适用于 Chrome,因此不能用于跨浏览器解决方案。此外,您提到的纯 javascript 实现中使用的 data-uris 在“有史以来最好的浏览器 IE”中也不起作用。为什么不奇怪我。 IE 自从开发以来就令人头疼,但因为它在大多数 Windows 版本中都是默认板载的,所以它被广泛使用。在 IE 中,您必须使用 blob url。为此,您可以使用 btoa。
猜你喜欢
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2014-12-17
  • 1970-01-01
相关资源
最近更新 更多