正文
有時候我們需要在網頁上增加下載按鈕,讓使用者能夠點擊後下載頁面上的資料,那麼怎麼才能實現功能呢?這裡有兩種方法:
現在需要在頁面上新增一個下載按鈕,點擊按鈕下載檔案。
題外話,這個下載圖示是引用的 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();//表单提交 });
完成後,在頁面上點擊了圖示,圖示就會自動下載圖示。