繁体   English   中英

在 JavaScript 中创建文本文件

[英]Create text file in JavaScript

我正在尝试使用 JavaScript 创建一个文本文件,我知道可以使用 ActiveX 对象,但它只在 IE 浏览器上运行良好。

我的要求是为 Safari 浏览器使用 JavaScript 生成文本文件?

任何人都可以在这方面帮助我吗?

另一种方法是使用BlobURL.createObjectURL 所有最近的浏览器,包括 Safari 6+ 都支持它们。

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);

    // returns a URL you can use as a href
    return textFile;
  };

这是一个使用此技术从textarea保存任意文本的示例

关于该示例的另一件事是我在下载链接上使用了download属性 不幸的是,Safari 目前不支持它。 然而,在浏览器中,点击时会自动下载文件,而不是在浏览器中打开文件。 此外,由于我将download属性设置为info.txt ,文件将使用该名称下载,而不是由createObjectURL生成的随机名称。

在 JavaScript 中,您可以使用以下行来要求用户保存文本文件:

window.open("data:text/json;charset=utf-8," + escape("Ur String Object goes here"));

一段时间前,我在一些流行的浏览器中对此进行了测试,但请检查它是否适用于 Safari。

您可以使用以下函数来创建和下载 txt 文件:

const initDownload = (function () {
  const a = document.createElement('a')
  document.body.appendChild(a)
  // @ts-ignore
  a.style = 'display: none'
  return function (data: string, fileName: string, fileHeader = 'data:application/zip;base64,') {
    a.href = fileHeader + data //Image Base64 Goes here
    a.download = fileName //File name Here
    a.click() //Downloaded file
  }
}())

initDownload(
  'content of file',
  'filename.txt',
  'data:text/json;charset=utf-8,'
)

但我的要求是使用 javascript 为 safari 浏览器生成一个文本文件

由于安全限制,vanilla JavaScript 无法做到这一点。 但是,您可以使用服务器端 JavaScript,例如 Node.JS 或 Ajax 或其他一些服务器端技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM