vue3文件下载功能

定义方法:

utils.js

javascript 复制代码
/**
 *
 * @param url 目标下载接口
 * @param query 查询参数
 * @param fileName 文件名称
 * @returns {*}
 */
export function downBlobFile(url: any, query: any, fileName: string) {
	return request({
		//
		url: url,
		method: 'get',
		responseType: 'blob',
		params: query,
	}).then((response) => {
		handleBlobFile(response, fileName);
	});
}

/**
 * blob 文件刘处理
 * @param response 响应结果
 * @returns
 */
export function handleBlobFile(response: any, fileName: string) {
	// 处理返回的文件流
	const blob = response;
	if (blob && blob.size === 0) {
		ElMessage.error('内容为空,无法下载');
		return;
	}
	const link = document.createElement('a');

	// 兼容一下 入参不是 File Blob 类型情况
	var binaryData = [] as any;
	binaryData.push(response);
	link.href = window.URL.createObjectURL(new Blob(binaryData));
	link.download = fileName;
	document.body.appendChild(link);
	link.click();
	window.setTimeout(function () {
		// @ts-ignore
		URL.revokeObjectURL(blob);
		document.body.removeChild(link);
	}, 0);
}

使用

test.vue

javascript 复制代码
  // 参数1:导出接口,参数2:参数,参数3:文件名
  downBlobFile('/xxx/xxx/xxx', {id}, `附件.${type}`);
相关推荐
Justin3go7 小时前
HUNT0 上线了——尽早发布,尽早发现
前端·后端·程序员
怕浪猫7 小时前
第一章 JSX 增强特性与函数组件入门
前端·javascript·react.js
铅笔侠_小龙虾7 小时前
Emmet 常用用法指南
前端·vue
钦拆大仁8 小时前
跨站脚本攻击XSS
前端·xss
前端小L8 小时前
贪心算法专题(十):维度权衡的艺术——「根据身高重建队列」
javascript·算法·贪心算法
VX:Fegn08959 小时前
计算机毕业设计|基于springboot + vue校园社团管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·课程设计
Fortunate Chen9 小时前
类与对象(下)
java·javascript·jvm
ChangYan.10 小时前
直接下载源码但是执行npm run compile后报错
前端·npm·node.js
skywalk816310 小时前
在 FreeBSD 上可以使用的虚拟主机(Web‑Hosting)面板
前端·主机·webmin