vue接收后端响应的二进制流文件,并在浏览器下载

博客介绍了前端使用axios向后端发送ajax请求,接收二进制文件流。通过创建Blob对象,利用URL.createObjectURL()生成链接并赋值给下载链接的href属性,触发事件下载文件。还提到不同请求代码有变动,可在终端用命令引入axios。

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

 我这里使用axios向后端发送ajax请求,并接收后端响应的二进制文件流,通过使用 response.data 创建了一个 Blob 对象,然后通过创建 URL.createObjectURL() 的链接,并将链接赋值给下载链接(a.href)的 href 属性。最后触发 a.click() 事件来下载 blob 对象。

 axios({
       method: "get",
       url: "http://localhost:8080/tool/gen/batchGenZip?param=user",
       responseType: "blob", //收到的数据为blob
     }).then(response =>{
        const blob = new Blob([response.data], { type: response.headers["content-type"] });
        const url = URL.createObjectURL(blob);
        const a = document.createElement("a");//创建一个a标签
        a.href = url;// 设置超链接的地址
        /*
后端设置的响应头,指定文件名和后缀名
          response.setHeader("Content-Disposition", "attachment; filename=\"" + tableName + "-" + simpleDateFormat.format(new Date()) + ".zip\"");
后端这里已经指定文件类型,也可前端设置
         */
//通过后端设置的响应头,获取文件名:
        const fileName= response.headers["content-disposition"].split(";")[1].split("=")[1];
//前端也可以设置下载文件的文件名:
        a.download = fileName;
        a.click();
   }).catch(error => console.log(error))

通过上述代码就可通过浏览器下载文件

注意:使用不同的请求,些许代码会有变动,这里使用axios发送请求引入的axios-0.18.0.js文件,

在前端项目中也可以在终端使用命令

npm install axios

并引入axios:

import axios from 'axios'
### 实现 Vue 中通过二进制流下载 Word 文件 为了实现在 Vue 应用程序中通过二进制流下载 Word 文件,可以采用如下方法: 定义一个用于处理文件下载的方法,在此方法内部发送 HTTP 请求获取文件数据,将其转换成浏览器能够识别的格式以便于触发下载行为。 ```javascript // 定义下载Word文档的方法 function downloadWordDocument() { axios({ url: '/api/export-word', // 后端提供导出Word的服务地址 method: 'GET', responseType: 'blob' // 设置响应的数据类型为Blob对象 }).then((response) => { const blob = new Blob([response.data], { type: 'application/msword' }); // 创建Blob对象指定MIME类型[^1] if (window.navigator && window.navigator.msSaveOrOpenBlob) { // 兼容IE浏览器 navigator.msSaveBlob(blob, "document.doc"); } else { var linkElement = document.createElement('a'); linkElement.href = URL.createObjectURL(blob); linkElement.download = "document.doc"; // 设定下载后的文件名称 document.body.appendChild(linkElement); linkElement.click(); // 执行点击事件来启动下载过程 document.body.removeChild(linkElement); // 清理创建的<a>标签元素 } }); } ``` 上述代码展示了如何利用 `axios` 发起 GET 请求至服务器以获得 Word 文档的内容作为二进制流形式返回给客户端。当接收响应之后,会依据不同的浏览器环境采取适当的方式让用户完成文件下载操作。 对于现代主流浏览器而言,通常的做法是构建一个新的 `<a>` HTML 锚点元素将它的 `href` 属性设置为目标资源链接;同时设定好要保存下来的文件名字以及扩展名(这里设定了 `.doc`),最后模拟一次用户的点击动作从而激活实际的下载流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值