vue axios返回二进制流下载文件

本文介绍了如何使用Axios从后台获取二进制流数据,并通过Blob对象和创建下载链接实现文件下载,重点展示了响应头设置和Blob处理技巧。

场景:axios请求后台,返回二进制流,下载excel文件

 代码

// 返回二进制流部分
let _res = res; // res就是返回的二进制流
let blob = new Blob([_res], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
let downloadElement = document.createElement("a");
let href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = 'Data output'; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
// 请求部分
在headers 里面加上responseType:'blob'

### 实现 Vue 中通过二进制流下载 Word 文件 为了实现在 Vue 应用程序中通过二进制流下载 Word 文件,可以采用如下方法: 定义一个用于处理文件下载的方法,在此方法内部发送 HTTP 请求获取文件数据,并将其转换成浏览器能够识别的格式以便于触发下载行为。 ```javascript // 定义下载Word文档的方法 function downloadWordDocument() { axios({ url: &#39;/api/export-word&#39;, // 后端提供导出Word的服务地址 method: &#39;GET&#39;, responseType: &#39;blob&#39; // 设置响应的数据类型为Blob对象 }).then((response) => { const blob = new Blob([response.data], { type: &#39;application/msword&#39; }); // 创建Blob对象并指定MIME类型[^1] if (window.navigator && window.navigator.msSaveOrOpenBlob) { // 兼容IE浏览器 navigator.msSaveBlob(blob, "document.doc"); } else { var linkElement = document.createElement(&#39;a&#39;); 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`),最后模拟一次用户的点击动作从而激活实际的下载流程。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值