我的网站上有一个表单,可根据输入为用户创建输出。 我想创建一个带有此输出的文本文件供用户下载(使用浏览器下载提示,没有安全问题)。
有没有办法用Javascript / jQuery做这个而不用PHP在服务器上先创建文件?
我可以使用某种Javascript对象作为虚拟文件,以便用户可以下载(以解决用户无法从服务器下载的真实txt文件的问题)吗?
答案 0 :(得分:3)
您可以使用Blob
(browser support,polyfill)来实现这一目标。看看这个example by @UselessCode:
(function () {
var textFile = null,
makeTextFile = function (text) {
var data = new Blob([text], {type: 'text/plain'});
// If we are replacing a previously generated file we need to
// manually revoke the object URL to avoid memory leaks.
if (textFile !== null) {
window.URL.revokeObjectURL(textFile);
}
textFile = window.URL.createObjectURL(data);
return textFile;
};
var create = document.getElementById('create'),
textbox = document.getElementById('textbox');
create.addEventListener('click', function () {
var link = document.getElementById('downloadlink');
link.href = makeTextFile(textbox.value);
link.style.display = 'block';
}, false);
})();
<textarea id="textbox">Type something here</textarea> <button id="create">Create file</button> <a download="info.txt" id="downloadlink" style="display: none">Download</a>