使用JS代碼實現點擊按鈕下載檔案,js代碼按鈕下載檔案
本文
有時候我們在網頁上需要增加一個下載按鈕,讓使用者能夠點擊後下載頁面上的資料,那麼怎樣才能實現功能呢?這裡有兩種方法:
現在需要在頁面上添加一個下載按鈕,點擊按鈕下載檔案。
題外話,這個下載表徵圖是引用的 font-awesome 上面的。使用時,首先將 font-awesome 整個檔案夾下載下來,利用bower或者是自己去官網上面下載都行。
將整個檔案夾放在專案檔中之後,在頁面上面引入css檔案
<link href="libs/font-awesome-4.7.0/css/font-awesome.min.css" type="text/css" rel="stylesheet">
在頁面上可以開始使用所需要的表徵圖了
<i class="fa fa-download" aria-hidden="true" title="下載"></i>
1.下載項目中的檔案
如果要下載的是一個excel檔案模板,可以先將該檔案放在專案檔夾下面,然後在頁面下載按鈕上加上onclick事件:
<i class="fa fa-download" aria-hidden="true" title="下載" onclick="window.open('file/user.xlsx')"></i>
這樣在點擊表徵圖之後,檔案就會自動下載了。
2.發送請求地址下載檔案
JQuery的ajax函數的傳回型別只有xml、text、json、html等類型,沒有“流”類型,所以我們要實現ajax下載,不能夠使用相應的ajax函數進行檔案下載。但可以用js產生一個form,用這個form提交參數,並返回“流”類型的資料。在實現過程中,頁面也沒有進行重新整理。
1)get請求
$('.download').click(function () {var tt = new Date().getTime();var url = 'http://192.168.1.231:8080/91survey/ws/excel/download';/*** 使用form表單來發送請求* 1.method屬性用來佈建要求的類型——post還是get* 2.action屬性用來佈建要求路徑。* */var form=$("<form>");//定義一個form表單form.attr("style","display:none");form.attr("target","");form.attr("method","get"); //請求類型form.attr("action",url); //請求地址$("body").append(form);//將表單放置在web中 /*** input標籤主要用來傳遞請求所需的參數:** 1.name屬性是傳遞請求所需的參數名.* 2.value屬性是傳遞請求所需的參數值.** 3.當為get類型時,請求所需的參數用input標籤來傳遞,直接寫在URL後面是無效的。* 4.當為post類型時,queryString參數直接寫在URL後面,formData參數則用input標籤傳遞* 有多少資料則使用多少input標籤* */var input1=$("<input>");input1.attr("type","hidden");input1.attr("name","tt");input1.attr("value",tt);form.append(input1);var input2=$("<input>");input2.attr("type","hidden");input2.attr("name","companyId");input2.attr("value",companyId);form.append(input2);form.submit();//表單提交})
2)post請求
$('.download').click(function(){var tt =newDate().getTime();var url = restUrl +'/excel/download?userId='+ userId;var form=$("<form>");//定義一個form表單form.attr("style","display:none");form.attr("target","");form.attr("method","post");//請求類型form.attr("action",url);//請求地址$("body").append(form);//將表單放置在web中var input1=$("<input>");input1.attr("type","hidden");input1.attr("name","tt");input1.attr("value",tt);form.append(input1);var input2=$("<input>");input2.attr("type","hidden");input2.attr("name","companyId");input2.attr("value",companyId);form.append(input2);form.submit();//表單提交});
完成後,在頁面上面點擊下載表徵圖,檔案就會自動下載了。