我想通過ajax啓動文件下載。我可以從服務器檢索數據,但無法讓瀏覽器打開數據。我不能指出瀏覽器的端點url處的location.href。從ajax下載的數據文件
我想要下載的資源通過需要自定義http標頭的端點以及身份驗證承載令牌公開。我無法更改後端api以允許cookie。因此,我不能只打開網址window.open(url,'_blank')
我可以向端點發出ajax請求,但我不知道如何在獲得響應後下載文件。
$.get("restAPI/file.pdf", function(data) {
var w = window.open(null,'_blank')
$(w.document.body).html(data);
});
無法正常工作或
我希望做同樣的事情到
var w = window.open(data,'_blank')
但這並不工作。
編輯
的解決方案,這要歸功於joyBlanks
$http({method: 'GET',
responseType:'arraybuffer',
headers: {
Accept: 'application/octet-stream',
}, url:url }
).then(function(data) {
var blob = new Blob([data.data]);
if (window.navigator.msSaveBlob)
window.navigator.msSaveBlob(blob, filename);
else {
var link = document.createElement('a');
link.id = filename;
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
}
});
認證信息可以放在網址:HTTP'://用戶名:密碼@服務器/ path' – Barmar
糾正我,如果我錯了,但好像你在問怎麼顯示服務器返回的數據。也許你可以嘗試像這樣 'document.getElementById(「elementToWrite」)。innerHTML = JSON.stringify(data,null,4);在ajax從服務器返回數據之後' 。 – user2879041
不記名令牌認證,只是基本/摘要。另外,我還必須將其他自定義標頭傳遞給端點以及 –