JQuery 實(shí)現(xiàn)文件下載的常用方法分析
本文實(shí)例講述了JQuery 實(shí)現(xiàn)文件下載的常用方法。分享給大家供大家參考,具體如下:
GET方式
window.location.href = url;
POST方式
var url = "下載接口地址"; // 構(gòu)造隱藏的form表單 var $form = $("<form id='download' class='hidden' method='post'></form>"); $form.attr("url",url); $(body).append($form); // 添加提交參數(shù) var $input1 = $("<input name='param1' type='text'></input>"); $input1.attr("value","參數(shù)值1"); $("#download").append($input1); var $input2 = $("<input name='param2' type='text'></input>"); $input1.attr("value","參數(shù)值2"); $("#download").append($input2); // 提交表單 $form.submit();
ajax為什么不能下載文件
ajax支持的服務(wù)器返回?cái)?shù)據(jù)類(lèi)型有:xml、json、script、html,其他類(lèi)型(例如二進(jìn)制流)將被作為String返回,無(wú)法觸發(fā)瀏覽器的下載處理機(jī)制和程序。
// ajax將返回?cái)?shù)據(jù)轉(zhuǎn)換為string,再利用該string創(chuàng)建Blob對(duì)象,下載的文件無(wú)法正確打開(kāi),數(shù)據(jù)可能已經(jīng)被破壞 var blob = new Blob([data]); //對(duì)于Blob對(duì)象,我們可以創(chuàng)建出一個(gè)URL來(lái)訪問(wèn)它。使用URL對(duì)象的createObjectURL方法。 var a = document.createElement('a'); a.download = 'data.doc'; a.href=window.URL.createObjectURL(blob); a.click()
HTML5 Blob對(duì)象
一直以來(lái),JS都沒(méi)有比較好的可以直接處理二進(jìn)制的方法。而B(niǎo)lob的存在,允許我們可以通過(guò)JS直接操作二進(jìn)制數(shù)據(jù)。Blob對(duì)象可以看做是存放二進(jìn)制數(shù)據(jù)的容器。
創(chuàng)建Blob對(duì)象
var blob = new Blob(dataArr:Array<any>, opt:{type:string,endings:string});
- dataArr:數(shù)組,包含了要添加到Blob對(duì)象中的數(shù)據(jù)。數(shù)據(jù)可以是任意多個(gè)ArrayBuffer,ArrayBufferView, Blob,或者 DOMString對(duì)象。
- opt:對(duì)象,包含兩個(gè)屬性
- type:用于設(shè)置Blob對(duì)象的屬性(如:MIME類(lèi)型)
- endings :(已廢棄),設(shè)置BlobBuilder.append() 方法的endings參數(shù),取值"transparent"或"native"
// 例如創(chuàng)建一個(gè)裝填DOMString對(duì)象的Blob對(duì)象 var data='<b style="font-size:32px;color:red;">Blob</b>'; var blob=new Blob([data],{"type":"text/html"}); console.log(blob);
xmlhttprequest 2 + Blob 實(shí)現(xiàn)文件下載
xmlhttprequest 2 標(biāo)準(zhǔn)支持流文件,使用 xhr.response
作為返回(不是responseText)
var url = ""; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true);//get請(qǐng)求,請(qǐng)求地址,是否異步 xhr.responseType = "blob"; // 返回類(lèi)型blob xhr.onload = function () {// 請(qǐng)求完成處理函數(shù) if (this.status === 200) { var blob = this.response;// 獲取返回值 var a = document.createElement('a'); a.download = 'data.doc'; a.href=window.URL.createObjectURL(blob); a.click(); } }; // 發(fā)送ajax請(qǐng)求 xhr.send();
更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《jQuery頁(yè)面元素操作技巧匯總》、《jQuery常見(jiàn)事件用法與技巧總結(jié)》、《jQuery常用插件及用法總結(jié)》、《jQuery擴(kuò)展技巧總結(jié)》及《jquery選擇器用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
相關(guān)文章
jQuery插件開(kāi)發(fā)基礎(chǔ)簡(jiǎn)單介紹
jquery插件開(kāi)發(fā)基礎(chǔ):開(kāi)發(fā)jQuery 插件的基本格式,開(kāi)發(fā)全局函數(shù)的基本格式,接下來(lái)為您詳細(xì)介紹,感興趣的朋友可以了解哦2013-01-01jQuery動(dòng)態(tài)添加li標(biāo)簽并添加屬性和綁定事件方法
下面小編就為大家分享一篇jQuery動(dòng)態(tài)添加li標(biāo)簽并添加屬性和綁定事件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02修改好的jquery滾動(dòng)字幕效果實(shí)現(xiàn)代碼
修改好的jquery滾動(dòng)字幕效果,需要的朋友可以參考下。2011-06-06jQuery中delegate和on的用法與區(qū)別詳細(xì)解析
本篇文章主要是對(duì)jQuery中delegate和on的用法與區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01JQuery 選擇器、DOM節(jié)點(diǎn)操作練習(xí)實(shí)例
下面小編就為大家?guī)?lái)一篇JQuery 選擇器、DOM節(jié)點(diǎn)操作練習(xí)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09checkbox批量選中,獲取選中項(xiàng)的值的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇checkbox批量選中,獲取選中項(xiàng)的值的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Jquery.TreeView結(jié)合ASP.Net和數(shù)據(jù)庫(kù)生成菜單導(dǎo)航條
在網(wǎng)上瀏覽了許多關(guān)于利用Jquery.TreeView插件生成樹(shù)的例子!但是大多數(shù)都沒(méi)有結(jié)合數(shù)據(jù)庫(kù)來(lái)生成樹(shù),很難運(yùn)用到實(shí)際項(xiàng)目中!2010-08-08