javascript實(shí)現(xiàn)生成并下載txt文件方式
js生成并下載txt文件
下面的簡單函數(shù)允許您直接在瀏覽器中生成文件,而無需接觸任何服務(wù)器。
它適用于所有HTML5就緒的瀏覽器,因?yàn)樗褂昧?lt;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接口的瀏覽器中實(shí)現(xiàn)它。如果您需要保存更大的文件,或者BLOB的大小限制,或者沒有足夠的內(nèi)存,那么請看一看更高級的StreamSaver.js,它可以使用新的StreamsAPI的強(qiáng)大功能將數(shù)據(jù)直接異步保存到硬盤中。同時(shí)支持進(jìn)度查看,取消和何時(shí)完成。
下面的代碼段允許您生成一個(gè)文件(具有任何擴(kuò)展名)并下載它,而無需鏈接任何服務(wù)器:
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 |
注意: 盡管它支持最新的瀏覽器,但您需要了解幾個(gè)技巧才能更好運(yùn)用。
js導(dǎo)出文件為txt并下載
今天要做一個(gè)數(shù)據(jù)下載到本地保存為txt文件,一開始網(wǎng)上找了很多例子,大部分都是用的ActiveXObject對象,但是粘貼到本地測試就報(bào)錯(cuò),后來才發(fā)現(xiàn)這個(gè)只兼容IE。
后來又搜索了半天才得到解決,現(xiàn)在我就把解決辦法給大家分享一下。
首先HTML結(jié)構(gòu)使用最簡單的結(jié)構(gòu)
<textarea name="" id="text" cols="30" rows="10">這里輸入的數(shù)據(jù)將保存為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);
}這樣就可以在點(diǎn)擊保存后將textarea中輸入的內(nèi)容本地化為txt文件。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- js實(shí)現(xiàn)文件流式下載文件方法詳解及完整代碼
- JavaScript進(jìn)階之前端文件上傳和下載示例詳解
- javascript Blob對象實(shí)現(xiàn)文件下載
- JavaScript 中如何實(shí)現(xiàn)大文件并行下載
- JavaScript實(shí)現(xiàn)多文件下載方法解析
- javascript使用Blob對象實(shí)現(xiàn)的下載文件操作示例
- JavaScript實(shí)現(xiàn)文件下載并重命名代碼實(shí)例
- 使用 JavaScript 創(chuàng)建并下載文件(模擬點(diǎn)擊)
- js實(shí)現(xiàn)下載(文件流式)方法詳解與完整實(shí)例源碼
相關(guān)文章
動(dòng)態(tài)顯示可輸入的字?jǐn)?shù)提示還可以輸入的字?jǐn)?shù)
這篇文章主要介紹了動(dòng)態(tài)顯示可輸入的字?jǐn)?shù)提示還可以輸入的字?jǐn)?shù),需要的朋友可以參考下2014-04-04
js實(shí)現(xiàn)網(wǎng)頁自動(dòng)刷新可制作節(jié)日倒計(jì)時(shí)效果
這篇文章主要介紹了通過js實(shí)現(xiàn)的網(wǎng)頁自動(dòng)刷新,利用此功能可制作節(jié)日倒計(jì)時(shí)效果,需要的朋友可以參考下2014-05-05
兼容ie ff div 層 打開+關(guān)閉+ 拖動(dòng)+遮罩+移動(dòng)+動(dòng)畫改變高寬
div層 打開+關(guān)閉+ 拖動(dòng)+遮罩+移動(dòng)+動(dòng)畫改變高寬的實(shí)例js代碼2008-07-07
詳解基于webpack2.x的vue2.x的多頁面站點(diǎn)
本篇文章主要主要介紹了基于webpack2.x的vue2.x的多頁面站點(diǎn) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-08-08
JavaScript設(shè)計(jì)模式--簡單工廠模式實(shí)例分析【XHR工廠案例】
這篇文章主要介紹了JavaScript設(shè)計(jì)模式--簡單工廠模式,結(jié)合實(shí)例形式分析了JavaScript設(shè)計(jì)模式中簡單工廠模式原理與XHR工廠應(yīng)用案例,需要的朋友可以參考下2020-05-05
javascript一個(gè)判斷瀏覽器類型的函數(shù)(類)
javascript一個(gè)判斷瀏覽器類型的函數(shù)(類)...2007-08-08
純JavaScript實(shí)現(xiàn)的完美漸變彈出層效果代碼
對于Web項(xiàng)目開發(fā)尤其是前臺(tái)UI的設(shè)計(jì)而言,用戶體驗(yàn)至關(guān)重要,因?yàn)樗苯雨P(guān)系到項(xiàng)目的成敗,簡潔,平滑,優(yōu)雅的設(shè)計(jì)永遠(yuǎn)能夠受到用戶的青睞。2010-04-04
Javascript 數(shù)組添加一個(gè) indexOf 方法的實(shí)現(xiàn)代碼
Javascript 的字符串有個(gè) indexOf 的方法,能夠返回字符在指定的字符串中的位置,非常有用,本文介紹了如何給 Javascript 數(shù)組也添加一個(gè)類似的方法。2009-09-09

