通過form表單的形式下載文件。


在項目中遇到問題,要求動態拼接uri下載文件。但是由於項目的安全攔截導致window.location.href 和 window.open等新建窗口的方法都不行。

無意間百度到了通過form表單來下載的方法,具體如下。

1,form的action設置為接口地址,method設置為post,Post到后台的數據設置為input的屬性 name = key,value = value的形式,如果有多個key、value的值要傳遞,那么就設置多個input來分別儲存單個的key、value;

2, 如果請求的接口可以不需要參數,那么input還是必須要一個,如果不要得話 會引起接口報錯

原理:form的action相當於一個瀏覽器本頁簽/頁面的一個請求,不會被后台,前台的路由攔截。所以能夠提交成功。

注意點:如果設置method為get,在action中的uri添加了參數的話,想用這個參數替代input的key、value形式來提交到后台,這參數是沒有效果的,后台拿不到這些參數,真正的參數還是以input的name、value的形式儲存,在submit方法執行后傳遞到后台。

 

代碼:

 

POST

let idInput = ary.map(item => {
return `<input type='hidden' name='idList' value=${item.id}/>`;
}).join('');
let url = `http://${pkg.config.devHost +":"+pkg.config.devPort}/api/entity/manager/export`
$(`<form method='get'  action='${url}'></form>`)
.appendTo('body')
.HTML(idInput)
.submit()
.remove();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM