如何生成多行下载文件Javascript

时间:2018-12-17 20:45:13

标签: javascript wordpress download webclient-download

我正在为用户可以根据输入的.mcfunction功能信息生成的数据包创建Minecraft .mcfunction文件。我已完成其他所有工作,但似乎无法制作可下载的文件。我进行了一些研究,发现下面的代码所示,问题是文件始终将所有内容打印在一行上,而且我不确定如何将其从.txt更改为.mcfunction

<script text="text/javascript">

function Download(name, text) {
    var pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    pom.setAttribute('download', name);

    if (document.createEvent) {
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, true);
        pom.dispatchEvent(event);
    }
    else {
        pom.click();
    }
}

</script>

有人知道如何将其显示为多行文本,而不是一行打印吗?我知道我输入的字符串变量是正确的,因为在按f12键发送到控制台后,可以看到它的外观。它会准确显示在控制台上的多行中,但下载文件时不会显示为多行。有关如何解决此问题的任何想法?

编辑: 我还看到了有关添加此行代码的内容,但不确定我应该将其放置在何处,或如何在此函数中使用它。

downloadURI("data:text/html," + parsed.join("\r\n"), "name.txt");

编辑: 刚刚发现在notepad ++中打开文件可以正确显示._。

2 个答案:

答案 0 :(得分:0)

您需要将\n替换为\r\n,以使其在Windows记事本中显示。至于更改文件名,请尝试name = name.substr(0, name.lastIndexOf(".")) + ".mcfunction";

答案 1 :(得分:0)

已解决:

<script text="text/javascript">


function ninjaShopDownload(name, text) {
    var pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain+ parsed.join("\r\n");charset=utf-8,' + encodeURIComponent(text));
    pom.setAttribute('download', name+".mcfunction");

    if (document.createEvent) {
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, true);
        pom.dispatchEvent(event);
    }
    else {
        pom.click();
    }
}

</script>

如果其他人需要它,我会保留。