【问题标题】:Download a string as .txt file in React在 React 中将字符串下载为 .txt 文件
【发布时间】:2017-11-23 04:58:39
【问题描述】:

单击按钮时,我有一个字符串需要下载到txt 文件中。这如何使用 React 来实现?

【问题讨论】:

  • 你的设置是什么?

标签: javascript file reactjs mime-types


【解决方案1】:

这是一个工作示例。在输入字段中输入文本,然后单击下载txt,这将下载一个txt,其中包含您在输入中输入的内容。

此解决方案创建text MIME 类型的新Blob object,并将其附加到临时锚点(<a>) 元素的href,然后以编程方式触发该元素。

Blob 对象表示不可变的原始数据的类似文件的对象。 Blob 表示不一定采用 JavaScript 原生格式的数据。


class MyApp extends React.Component {
  downloadTxtFile = () => {
    const element = document.createElement("a");
    const file = new Blob([document.getElementById('myInput').value], {type: 'text/plain'});
    element.href = URL.createObjectURL(file);
    element.download = "myFile.txt";
    document.body.appendChild(element); // Required for this to work in FireFox
    element.click();
  }
  
  render() {
    return (
      <div>
        <input id="myInput" />
        <button onClick={this.downloadTxtFile}>Download txt</button>
      </div>
    );
  }
}

ReactDOM.render(<MyApp />, document.getElementById("myApp"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="myApp"></div>

这个答案来自thanhpk'spost

【讨论】:

  • 所以,你实际上是说这个问题是重复的。
  • @KevinB,不是真的。链接的问题没有解释解决方案,也不是与反应相关的问题。将此标记为对该问题的欺骗对OP和未来的读者都没有太大帮助。我解释了解决方案并提供了一个工作示例,这比上述帖子更有帮助。但是,如果您认为是骗局,为什么不自己将其标记为骗局呢?
  • 我正在讨论是否要在相反的方向关闭它。正如你所说,这是一对更有用的 QA。
  • 由于某种原因,这段代码在 Firefox 中对我没有任何作用(
  • Firefox 要求在点击之前将元素附加到正文中。 document.body.appendChild(元素)
猜你喜欢
  • 1970-01-01
  • 2011-01-06
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多