3 回答

TA貢獻1900條經驗 獲得超5個贊
這是一種特殊類型的標頭,因此要在前端獲取此標頭,后端人員應該允許從他的一端。然后你可以在響應中的標題
response.headers.get("content-disposition")
我在我的項目中使用了以下代碼
downloadReport(url, data) {
fetch("url of api")
.then(async response => {
const filename = response.headers
.get("content-disposition")
.split('"')[1];
const text = await response.text();
return { filename, text };
})
.then(responseText => this.download(responseText))
.catch(error => {
messageNotification("error", error.message);
throw new Error(error.message);
});
}

TA貢獻1843條經驗 獲得超7個贊
要從客戶端(前端)的 Content-Disposition 獲取文件名,您必須從服務器端(后端)授予權限。Spring用戶可以使用
@CrossOrigin(value = {"*"}, exposedHeaders = {"Content-Disposition"})
@Controller
@RequestMapping("some endpoint")
在他們的控制器類中。
然后從前端我們可以使用獲取文件名。
const filename = response.headers['content-disposition'].split('filename=')[1];
希望這可以幫助。上述解決方案對我來說效果很好

TA貢獻1844條經驗 獲得超8個贊
您可以通過這種方式filename從header 獲取Content-Disposition
getFileFromServer(params).then(response => {
// your old code
const [, filename] = response.headers['content-disposition'].split('filename=');
const link = document.createElement('a');
link.download = filename;
// your old code
});
希望這會有所幫助
- 3 回答
- 0 關注
- 200 瀏覽
添加回答
舉報