我已经能够编写 JavaScript 以使浏览器使用如下代码从远程服务器下载文件:
var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = "filename.zip"
document.body.appendChild(iframe);
效果很好。但是,现在我遇到了另一种情况,文件的内容存储在浏览器端 JavaScript 中的字符串中,我需要触发该文件的下载。我试过用这个替换上面的第三行,其中“myFileContents”是包含文件实际字节的字符串:
iframe.src = "data:application/octet-stream;base64," + Base64.encode(myFileContents);
这将下载文件,但文件名丢失。在 Chrome 中,文件名只是“下载”。我还读到某些浏览器版本允许的文件大小有限制。
有没有办法做到这一点?使用 JQuery 就可以了。该解决方案需要支持任何文件类型 - zip、pdf、csv、png、jpg、xls 等...