vue 前后端分离下载文件
创始人
2024-05-07 03:14:43

vue 前后端分离下载文件

1.概述

这篇文章介绍下vue开发下载文件功能

2.下载文件方式

下载文件有两种方式,一个是通过a标签下载文件。一个是通过调用下载接口下载文件。
两种方式下载文件区别:

  • a标签通过链接下载文件,如果遇到图片浏览器可以解析,那么就不会下载而是直接在浏览器中打开。excel、word、zip等文件浏览器不能解析的则会下载文件。
  • 调用后端接口下载文件,接口返回的是字节流,因此浏览器不能解析,所有文件格式都会下载。

2.1.a标签方式下载文件

在vue页面的methods方法对象中创建一个方法,编辑下载文件代码。

methods: {downloadFile(fileData) {// 获取下载文件内容let fileName = fileData.fileNamelet fileUrl = fileData.fileUrllet lastName = fileUrl.substring(fileUrl.lastIndexOf("."))// 创建a标签const link = document.createElement("a")link.download = lastName// 下载链接地址link.href = fileUrl// 新标签中下载link.target = "_blank"link.style.display = "none"// 将a标签添加到dom中document.body.appendChild(link)// 下载文件link.click()// 从dom中移除a标签document.body.removeChild(link)}
}

2.2.接口方式下载文件

在vue页面的methods方法对象中创建一个方法,编辑下载文件代码。

  • 首先请求下载接口,获取返回的字节流。
  • 通过a标签方式从接口返回的字节流下载文件。
methods: {downloadEvt(fileData) {// 1.请求下载接口,接口返回字节流request({url: "/api/file/download",method: "get",params: {fileId: id},// 设置响应格式为 multipart/form-dataresponseType: "blob",}).then((res) => {// 获取下载文件内容let fileName = fileData.fileNamelet fileUrl = fileData.fileUrllet lastName = fileUrl.substring(fileUrl.lastIndexOf("."))// 创建a标签const link = document.createElement("a")link.download = lastName// 2.使用接口返回的数据下载link.href = URL.createObjectURL(res)// 新标签中下载link.target = "_blank"link.style.display = "none"// 将a标签添加到dom中document.body.appendChild(link)// 下载文件link.click()// 从dom中移除a标签URL.removeObjectURL(link.href)document.body.removeChild(link)})}
}

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...