javascript實現(xiàn)生成并下載txt文件方式
js生成并下載txt文件
下面的簡單函數允許您直接在瀏覽器中生成文件,而無需接觸任何服務器。
它適用于所有HTML5就緒的瀏覽器,因為它使用了<a>的下載屬性:
function download(filename, text) { ? var element = document.createElement('a'); ? element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); ? element.setAttribute('download', filename); ? ? element.style.display = 'none'; ? document.body.appendChild(element); ? ? element.click();? ? document.body.removeChild(element); }? ? download("hello.txt","This is the content of my file :)");
創(chuàng)建庫,FileSaver.js在不支持saveAs()的FileSaver接口的瀏覽器中實現(xiàn)它。如果您需要保存更大的文件,或者BLOB的大小限制,或者沒有足夠的內存,那么請看一看更高級的StreamSaver.js,它可以使用新的StreamsAPI的強大功能將數據直接異步保存到硬盤中。同時支持進度查看,取消和何時完成。
下面的代碼段允許您生成一個文件(具有任何擴展名)并下載它,而無需鏈接任何服務器:
var content = "What's up , hello world"; // any kind of extension (.txt,.cpp,.cs,.bat) var filename = "hello.txt"; ? var blob = new Blob([content], { ?type: "text/plain;charset=utf-8" }); ? saveAs(blob, filename);
下表顯示了FileSaver.js在不同瀏覽器中的兼容性
Browser | Constructs as | Filenames | Max Blob Size | Dependencies |
---|---|---|---|---|
Firefox 20+ | Blob | Yes | 800 MiB | None |
Firefox < 20 | data: URI | No | n/a | Blob.js |
Chrome | Blob | Yes | [500 MiB][3] | None |
Chrome for Android | Blob | Yes | [500 MiB][3] | None |
Edge | Blob | Yes | ? | None |
IE 10+ | Blob | Yes | 600 MiB | None |
Opera 15+ | Blob | Yes | 500 MiB | None |
Opera < 15 | data: URI | No | n/a | Blob.js |
Safari 6.1+* | Blob | No | ? | None |
Safari < 6 | data: URI | No | n/a | Blob.js |
Safari 10.1+ | Blob | Yes | n/a | None |
注意: 盡管它支持最新的瀏覽器,但您需要了解幾個技巧才能更好運用。
js導出文件為txt并下載
今天要做一個數據下載到本地保存為txt文件,一開始網上找了很多例子,大部分都是用的ActiveXObject對象,但是粘貼到本地測試就報錯,后來才發(fā)現(xiàn)這個只兼容IE。
后來又搜索了半天才得到解決,現(xiàn)在我就把解決辦法給大家分享一下。
首先HTML結構使用最簡單的結構
<textarea name="" id="text" cols="30" rows="10">這里輸入的數據將保存為txt中</textarea> <button id="save" type="button">保存</button>
然后js
? ? ? ?document.querySelector('#save').addEventListener('click', saveFile); ? ? ? ?function fakeClick(obj) {? ? ? ? ? var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); obj.dispatchEvent(ev); } function exportRaw(name, data) { var urlObject = window.URL || window.webkitURL || window; var export_blob = new Blob([data]); var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a") save_link.href = urlObject.createObjectURL(export_blob); save_link.download = name; fakeClick(save_link); } function saveFile(){ var inValue ?= document.querySelector('#text').value; exportRaw('test.txt', inValue); }
這樣就可以在點擊保存后將textarea中輸入的內容本地化為txt文件。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
async/await實現(xiàn)Promise.all()的方式
Promise.all() 方法接收一個 promise 的 iterable 類型的輸入,并且只返回一個Promise實例,并且輸入的所有 promise 的 resolve 回調的結果是一個數組,對async/await實現(xiàn)Promise.all()相關知識感興趣的朋友一起看看吧2022-12-12至2023年最好用的兼容多瀏覽器的原生js復制函數copyText
因為后臺需要增加一些復制一些內容非表單中內容,那么下面這個函數就非常的好用了,其實也是利用了表單的數據權限比較容易突破,下面是具體的實現(xiàn)函數,大家可以拿走2023-05-05