为了账号安全,请及时绑定邮箱和手机立即绑定

如何在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 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号