I have a string which needs to be downloaded in a txt
file when click on a button. How can this be implemented using React?
Enter the text in the input field and click Download txt , this will download a txt with the contents you entered in the input. This solution creates a new Blob object of the text MIME type and attaches it to the href of a temporary anchor ( <a> ) element which is then triggered programmatically.
Use the download Attribute to Download Files in React Typically, web developers use the anchor element <a> to navigate another page. The <a> element also accepts the download attribute. It tells the browser to save the file located at the specified URL instead of changing the URL.
To download a file with React. js, we can add the download attribute to an anchor element. We just add the download prop to do the download. If we don't want to use an anchor element, we can also use the file-saver package to download our file.
Here's a working example. Enter the text in the input field and click Download txt, this will download a txt
with the contents you entered in the input.
This solution creates a new Blob object of the text
MIME type and attaches it to the href
of a temporary anchor (<a>
) element which is then triggered programmatically.
A Blob object represents a file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format.
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>
This answer was derived from thanhpk's post.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With