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}`);
相关推荐
lichenyang4534 分钟前
鸿蒙 ArkUI 走马灯卡片实战:从官方文档检索到 Swiper 实现
前端
喵个咪10 分钟前
吃透后台权限系统:从架构设计到 Vue3/React 双框架完整落地
前端·vue.js·react.js
hdsoft_huge11 分钟前
全开源数字孪生系统搭建方案:全套技术文档
vue.js·开源·node.js·echarts·webstorm
一起逃去看海吧11 分钟前
对接LangSmith
java·前端·数据库
wyhwust11 分钟前
web应用技术-第一次课后作业
java·前端·数据库
问心无愧051314 分钟前
ctf show web入门257
android·前端·笔记
学且思16 分钟前
Vue3 Patch 算法深度解析:从原理到源码实现
前端·vue.js
streaker30321 分钟前
从复制 Token 到复用登录态:site-fetchkit 的抽离过程
前端·浏览器·ai编程
卤蛋fg623 分钟前
vxe-table 导出 XLSX 文件:自动展开分组并导出图片
vue.js
HackTwoHub27 分钟前
AI赋能Chrome MCP × JS逆向Skill自动化JS逆向挖洞
javascript·人工智能·chrome·安全·web安全·网络安全·自动化