使用JS代碼實現(xiàn)點擊按鈕下載文件
正文
有時候我們在網(wǎng)頁上需要增加一個下載按鈕,讓用戶能夠點擊后下載頁面上的資料,那么怎樣才能實現(xiàn)功能呢?這里有兩種方法:
現(xiàn)在需要在頁面上添加一個下載按鈕,點擊按鈕下載文件。
題外話,這個下載圖標是引用的 font-awesome 上面的。使用時,首先將 font-awesome 整個文件夾下載下來,利用bower或者是自己去官網(wǎng)上面下載都行。
將整個文件夾放在項目文件中之后,在頁面上面引入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.發(fā)送請求地址下載文件
JQuery的ajax函數(shù)的返回類型只有xml、text、json、html等類型,沒有“流”類型,所以我們要實現(xiàn)ajax下載,不能夠使用相應的ajax函數(shù)進行文件下載。但可以用js生成一個form,用這個form提交參數(shù),并返回“流”類型的數(shù)據(jù)。在實現(xiàn)過程中,頁面也沒有進行刷新。
1)get請求
$('.download').click(function () {
var tt = new Date().getTime();
var url = 'http://192.168.1.231:8080/91survey/ws/excel/download';
/**
* 使用form表單來發(fā)送請求
* 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標簽主要用來傳遞請求所需的參數(shù):
*
* 1.name屬性是傳遞請求所需的參數(shù)名.
* 2.value屬性是傳遞請求所需的參數(shù)值.
*
* 3.當為get類型時,請求所需的參數(shù)用input標簽來傳遞,直接寫在URL后面是無效的。
* 4.當為post類型時,queryString參數(shù)直接寫在URL后面,formData參數(shù)則用input標簽傳遞
* 有多少數(shù)據(jù)則使用多少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();//表單提交
});
完成后,在頁面上面點擊下載圖標,文件就會自動下載了。
相關文章
js圖數(shù)據(jù)結構處理 迪杰斯特拉算法代碼實例
這篇文章主要介紹了js圖數(shù)據(jù)結構處理 迪杰斯特拉算法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09
JavaScript處理解析JSON數(shù)據(jù)過程詳解
JSON 是 JavaScript 原生格式,也就是說在 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何特殊的 API 或工具包。接下來,本文給大家介紹JavaScript處理解析JSON數(shù)據(jù)過程詳解,感興趣的朋友快來了解了解吧2015-09-09

