后端返回下载地址url,前端如何下载文件

这篇博客介绍了如何在前端通过JavaScript处理后端返回的文件下载URL,利用创建a标签并模拟点击的方式实现文件的下载。具体步骤包括设置a标签的目标为_blank,赋予下载地址,设置下载文件名,并在下载完成后移除a标签元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

后端返回的是个下载的地址url,前端点击按钮之后下载文件

解决方案:

创建a的下载链接,进行下载
本项目中得到的返回的下载地址为httpAddress字段中的url值

    downLoad(record) {
      if (record.httpAddress) {
        // console.log('record.httpAddress: ', record.httpAddress)
        const link = document.createElement('a')
        //_blank表示在新窗口打开链接
        link.target = '_blank'
        link.href = record.httpAddress
        link.setAttribute('download', '文件名字' + Date.now() + '.xls') // 下载文件的名称及文件类型后缀
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link) // 下载完成移除元素
      }
    },
前端通过URL下载文件通常有以下几种方式: 1. 使用HTML的`<a>`标签:这是一种简单直接的方法,只需要将文件URL设置为`<a>`标签的`href`属性,并通过设置`download`属性来提示浏览器下载而不是跳转。例如: ```html <a href="文件URL" download>下载文件</a> ``` 当用户点击这个链接时,浏览器会自动开始下载文件。 2. 使用JavaScript的`fetch`或`XMLHttpRequest`:这种方式可以提供更多的控制能力,比如在下载前进行认证,或者下载过程中给用户反馈。使用`fetch`函数可以通过设置响应类型为`"blob"`来处理文件内容。示例如下: ```javascript fetch('文件URL', { method: 'GET' }).then(response => response.blob()) .then(blob => { const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.style.display = 'none'; a.href = url; a.download = '文件名'; document.body.appendChild(a); a.click(); document.body.removeChild(a); window.URL.revokeObjectURL(url); }) .catch(error => { console.log('下载出错:', error); }); ``` 这段代码首先发送GET请求到文件URL,然后将响应的Blob对象转换为一个可以下载URL,并创建一个临时的`<a>`标签来模拟点击下载。 3. 使用第三方库:如axios等,这些库封装了HTTP请求,使得操作更加简便。使用axios下载文件可能如下所示: ```javascript axios({ url: '文件URL', method: 'GET', responseType: 'blob', // 重要 }).then(response => { const url = window.URL.createObjectURL(new Blob([response.data])); const a = document.createElement('a'); a.style.display = 'none'; a.href = url; a.download = '文件名'; document.body.appendChild(a); a.click(); document.body.removeChild(a); window.URL.revokeObjectURL(url); }) .catch(error => { console.log('下载出错:', error); }); ``` 这段代码使用axios发送请求,并在收到响应后创建一个临时的下载链接。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值