通常,HTML页面可以链接到可以从服务器下载的文档(PDF等).
假设启用了Javascript的网页,是否可以从用户浏览器中动态创建文本文档(例如)并添加链接以下载此文档而无需往返服务器(或最小的一个)?
换句话说,用户会点击一个按钮,javascript会生成randoms数字(例如),并将它们放在一个结构中.然后,javascript(例如JQuery)将添加到页面的链接以将结果作为文本文件从结构下载.
此目标是将所有(或至少大部分)工作负载保留在用户端.
这是可行的,如果是的话怎么样?
当用户点击网页上的图像时,我想触发浏览器的"保存图像"对话框,并让用户将图像保存在硬盘上.是否有一种跨浏览器的方式来使用jQuery/Javascript?
我希望能够截取页面的屏幕截图并为用户提供将其保存到桌面的选项(使用标准的OS文件保存提示).这可能来自Chrome扩展程序环境吗?我不担心图像方面,更多的是保存到用户文件系统.
我查看了以下几页(其中包括):
http://www.html5rocks.com/en/tutorials/file/filesystem/#toc-support
我正在尝试创建一个google-chrome-extension,它将下载一个mp3文件.我正在尝试使用HTML5 blob和iframe来触发下载,但它似乎不起作用.这是我的代码:
var finalURL = "server1.example.com/u25561664/audio/120774.mp3";
var xhr = new XMLHttpRequest();
xhr.open("GET", finalURL, true);
xhr.setRequestHeader('Content-Type', 'application/octet-stream');
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
var bb = new (window.BlobBuilder || window.WebKitBlobBuilder)();
bb.append(xhr.responseText);
var blob = bb.getBlob("application/octet-stream");
var saveas = document.createElement("iframe");
saveas.style.display = "none";
saveas.src = window.webkitURL.createObjectURL(blob);
document.body.appendChild(saveas);
delete xhr;
delete blob;
delete bb;
}
}
xhr.send();
Run Code Online (Sandbox Code Playgroud)
在控制台中查看时,正确创建了blob,设置看起来正确:
大小:15312172类型:"application/octet-stream"
但是,当我尝试创建的链接时createObjectURL(),
BLOB:铬扩展:// dkhkkcnjlmfnnmaobedahgcljonancbe/b6c2e829-c811-4239-bd06-8506a67cab04
我收到一份空白文件和警告说
资源解释为Document但使用MIME类型application/octet-stream传输.
如何让我的代码正确下载文件?
此SO答案详细说明了如何通过Chrome扩展程序下载文件,但我使用的是内容脚本,该内容脚本对Chrome API的访问权限有限.换句话说,我无权访问该chrome.downloads对象.我也试过这个vanilla JS解决方案,但它对我不起作用.有没有人有内容脚本的解决方案或知道为什么第二个解决方案不起作用?