在React中将字符串下载为.txt文件

Aka*_*esh 14 javascript file mime-types reactjs

我有一个字符串,txt当点击按钮时需要在文件中下载.如何使用React实现?

Chr*_*ris 34

这是一个有效的例子.在输入字段中输入文本并单击Download txt,这将txt使用您在输入中输入的内容下载a .

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

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"));
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

这个答案来自thanhpk的 帖子.

  • @KevinB,不是真的。链接的问题没有解释解决方案,也不是与反应相关的问题。将其标记为该问题的重复对OP和未来的读者都没有多大帮助。我解释了解决方案并提供了一个工作示例,这比所述帖子更有帮助。但如果您认为它是骗局,为什么不自己将其标记为骗局呢? (4认同)
  • 出于某种原因,这段代码在我的Firefox中没有任何作用( (2认同)
  • Firefox要求在单击之前将元素附加到正文。document.body.appendChild(element) (2认同)
  • 谢谢@克里斯。可以确认到 2023 年这仍然有效。 (2认同)