【问题标题】:Create text file in JavaScript在 JavaScript 中创建文本文件
【发布时间】:2011-11-18 06:56:09
【问题描述】:

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

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

谁能在这方面帮助我?

【问题讨论】:

标签: javascript file browser safari


【解决方案1】:

另一种方法是使用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;
  };

这是一个example,它使用这种技术从textarea 保存任意文本。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 自发布此答案已过去 3 年,但此代码在 Google Chrome 中无法正常运行。
    【解决方案3】:

    您可以使用以下函数来创建和下载一个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) {
        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,'
    )
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 2015-03-05
        • 1970-01-01
        • 1970-01-01
        • 2015-01-11
        相关资源
        最近更新 更多