通常,HTML 页面可以包含可从服务器下载的文档(PDF 等)的链接。
假设有一个启用 Javascript 的网页,是否可以从用户浏览器中动态创建一个文本文档(例如),并添加一个链接来下载该文档,而无需往返服务器(或最少一次)?
换句话说,用户单击按钮,JavaScript 将生成随机数(例如),并将它们放入结构中。然后,javascript(例如 JQuery)将添加一个指向页面的链接,以从结构中以文本文件形式下载结果。
此目标是将所有(或至少大部分)工作负载保留在用户端。
这是否可行,如果可行,如何实现?
这是我创建的一个解决方案,它允许您在单击:
<html>
<body>
<button onclick='download_file("my_file.txt", dynamic_text())'>Download</button>
<script>
function dynamic_text() {
return "create your dynamic text here";
}
function download_file(name, contents, mime_type) {
mime_type = mime_type || "text/plain";
var blob = new Blob([contents], {type: mime_type});
var dlink = document.createElement('a');
dlink.download = name;
dlink.href = window.URL.createObjectURL(blob);
dlink.onclick = function(e) {
// revokeObjectURL needs a delay to work properly
var that = this;
setTimeout(function() {
window.URL.revokeObjectURL(that.href);
}, 1500);
};
dlink.click();
dlink.remove();
}
</script>
</body>
</html>
我通过改编代码创建了这个这个 HTML5 演示 http://html5-demos.appspot.com/static/a.download.html并搞乱事情直到它起作用,所以我确信它存在问题(如果您有改进,请发表评论或编辑!)但它是一个有效的单击解决方案。
(至少,它适用于 Windows 7 中最新版本的 Chrome)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)