亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在reactjs中通過javascript下載文件

如何在reactjs中通過javascript下載文件

藍山帝景 2022-01-01 18:46:39
我有一個鏈接 /api/ticket/1/download 到我的服務器,如果我將它復制粘貼到瀏覽器中,它將開始下載我的文件,它的文件擴展名和一切都已經設置好了。我怎樣才能在 javascript 中做到這一點?隨著thymeleaf我只是用<a href="myLink">它的工作一樣,如果我把它粘貼到瀏覽器中。但由于react-router a href只是轉到另一個頁面。但如果我await fetch像這樣使用:let url1 = '/api/ticket/' + fileId + '/download';        const response = await fetch(url1);        const blob = response.blob();        const url = window.URL.createObjectURL(new Blob([blob]));        const link = document.createElement('a');        link.href = url;        link.setAttribute('download', `file.jpg`);        document.body.appendChild(link);        link.click();我可以將響應傳輸到 blob,但隨后我錯過了文件名和擴展名。
查看完整描述

2 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

我發現解決這個問題的唯一方法是:在響應頭中發送文件名和擴展名,然后手動解析它們。像:在春天:


myControllerMethod( HttpServletResponse response){

...

 response.setContentType(att.getType());

 response.setHeader("Content-Disposition", "attachment; filename=\"" + myFileName + "\"");

}

在反應:


const headers = response.headers;

const file = headers.get("Content-Disposition");

然后手動解析這個“文件”以獲取文件名;


查看完整回答
反對 回復 2022-01-01
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

以這種方式嘗試,它可能會幫助您:


fetch('http://localhost:8080/employees/download')

            .then(response => {

                response.blob().then(blob => {

                    let url = window.URL.createObjectURL(blob);

                    let a = document.createElement('a');

                    a.href = url;

                    a.download = 'employees.json';

                    a.click();

                });


查看完整回答
反對 回復 2022-01-01
  • 2 回答
  • 0 關注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號