Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTML元素中的数据创建Javascript Blob()。然后将其作为文本文件下载_Javascript_Html_Text_Blob - Fatal编程技术网

使用HTML元素中的数据创建Javascript Blob()。然后将其作为文本文件下载

使用HTML元素中的数据创建Javascript Blob()。然后将其作为文本文件下载,javascript,html,text,blob,Javascript,Html,Text,Blob,我正在使用HTML5网站在textarea元素中创建一个日志。我需要点击一个按钮从那个区域提取数据,然后通过一个.txt文件下载到我的计算机上。如果可能的话,我该怎么做 HTML: 我想如果我创建Blob,为它创建一个URL,将URL映射到一个“a”元素,然后自动单击它,那么理论上它应该可以工作。很明显我错过了一些东西。任何帮助都会很棒。本网站的第一个问题顺便说一句:p const downloadBlobAsFile = (function closure_shell() { cons

我正在使用HTML5网站在textarea元素中创建一个日志。我需要点击一个按钮从那个区域提取数据,然后通过一个.txt文件下载到我的计算机上。如果可能的话,我该怎么做

HTML:

我想如果我创建Blob,为它创建一个URL,将URL映射到一个“a”元素,然后自动单击它,那么理论上它应该可以工作。很明显我错过了一些东西。任何帮助都会很棒。本网站的第一个问题顺便说一句:p

const downloadBlobAsFile = (function closure_shell() {
    const a = document.createElement("a");
    return function downloadBlobAsFile(blob, filename) {
        const object_URL = URL.createObjectURL(blob);
        a.href = object_URL;
        a.download = filename;
        a.click();
        URL.revokeObjectURL(object_URL);
    };
})();


document.getElementById("theButton").addEventListener("click", _ => {
    downloadBlobAsFile(new Blob(
        [document.getElementById("ticketlog").value],
        {type: "text/plain"}
    ), "result.txt");
});

下载属性的值我想到的最简单的方法如下:

function download(text, filename){
  var blob = new Blob([text], {type: "text/plain"});
  var url = window.URL.createObjectURL(blob);
  var a = document.createElement("a");
  a.href = url;
  a.download = filename;
  a.click();
}

download("this is the file", "text.txt");

可能的
blob
文件类型列表:

我使用了这种不涉及创建元素的方法,并在浏览器显示文本文件后撤销文本文件

var text = 'hello blob';
var blob = new Blob([text], { type: 'text/plain' });
let textFile = window.URL.createObjectURL(blob);
let window2 = window.open(textFile, 'log.' + new Date() + '.txt');
window2.onload = e => window.URL.revokeObjectURL(textFile);

查看解决方案所在的位置。您需要调用单击href,而不是下载。和href需要以某种方式附加到文档中。或者,我的download.js脚本接受blob、string或dataurl:,并处理比[download]alonets更多的设备这应该被接受为答案。另外,除非先使用
document.appendElement
,否则
a.click()
将无法工作。至少在Firefox53中是这样。我没注意到。谢谢。完成后请确保使用
window.URL.revokeObjectURL(URL)
,以避免内存泄漏。
function download(text, filename){
  var blob = new Blob([text], {type: "text/plain"});
  var url = window.URL.createObjectURL(blob);
  var a = document.createElement("a");
  a.href = url;
  a.download = filename;
  a.click();
}

download("this is the file", "text.txt");
var text = 'hello blob';
var blob = new Blob([text], { type: 'text/plain' });
let textFile = window.URL.createObjectURL(blob);
let window2 = window.open(textFile, 'log.' + new Date() + '.txt');
window2.onload = e => window.URL.revokeObjectURL(textFile);