vue 后台接口返回文件流 前端实现文件下载

本文介绍如何在Vue应用中处理后端返回的文件流,通过axios设置responseType为'blob'来接收文件,利用URL.createObjectURL转换为可下载的URL,并结合HTML的a标签模拟点击下载。同时,探讨了代码优化,包括使用URL.revokeObjectURL释放资源,以及指定文件下载名称和后缀的方法。
摘要由CSDN通过智能技术生成

html文件 绑定点击事件

<el-tag @click="downloadCsv">
        <i class="el-icon-download" />
        <span>点击下载模版</span>
</el-tag>

VUE > methods里定义方法

  // 下载模版
 downloadCsv() {
   
      this.$axios.get('/api/company', {
    responseType: 'blob' }).then(data 
前端进行文件下载,通常是通过调用后台接口获取文件,然后在浏览器端触发一个下载操作。使用Vue框架时,可以通过axios等HTTP请求库来获取后台数据,再配合一些前端JavaScript代码来实现文件下载。以下是一个简单的示例实现: ```javascript <template> <button @click="downloadFile">下载文件</button> </template> <script> export default { methods: { downloadFile() { // 使用axios发送请求,获取文件 axios({ url: '后台接口地址', // 请替换为实际的接口地址 method: 'GET', responseType: 'blob', // 告诉浏览器响应体是blob类型,这样文件下载时才能正确处理 timeout: 10000 }).then(response => { // 创建一个URL对象,用于读取响应的blob数据 const url = window.URL.createObjectURL(new Blob([response.data])); // 创建一个a标签用于下载 const link = document.createElement('a'); link.href = url; link.setAttribute('download', '文件名.xlsx'); // 设置下载文件名,可以包含后缀 // 把a标签添加到文档中,模拟点击实现下载 document.body.appendChild(link); link.click(); // 下载完成后移除a标签 document.body.removeChild(link); }).catch(error => { console.error('下载文件失败:', error); }); } } }; </script> ``` 在这个示例中,点击按钮会触发`downloadFile`方法。这个方法通过axios向后台请求文件数据,设置`responseType`为`blob`以确保响应数据被作为二进制数据处理。获取到文件后,使用`window.URL.createObjectURL`创建一个可下载的URL,然后创建一个`a`标签,设置其`href`属性为这个URL,并通过设置`download`属性指定下载文件名。最后模拟点击`a`标签触发下载,并在下载后将其从文档中移除。 请注意,根据实际需求,后台接口地址、请求方式、文件名以及请求参数等都需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值