vue文件下载
创始人
2025-05-28 20:27:46

        首先说明一下,在文件下载这边踩了个坑,花了好长时间才解决!!!就是后台给的接口返回的是一个二进制文件流,但是前端请求返回的结果将二进制文件流改成了字符串,所以导致下载一直不成功。

        后期发现是mock.js影响到了,所以在main.js中将mock注释掉就立马可以下载了。当然我项目用的是vue-element-admin框架。

        如果你遇到文件下载不成功,且有使用mock.js的话,赶紧长点心,不然真的累死都不知道为啥一直下载不成功。

         接下来开始步入正题,我下面零零碎碎有好几种下载下载方法,大家可以根据自己的意愿选择下载方法。

        一、使用window.open()下载

        这种方法最简单,就是后台给你直接提供一个下载地址,直接window.open(url)进行下载就可以了。

        当然我是在js中封装了一个公共的方法,在需要的页面导入使用即可,代码如下:

/**
* 下载文件(公共方法)
* @param response 文件地址
*/
export function handleDownloadUrl(response) {window.open('/fileUpload/' + response)
}
// vue页面导入方法
import { handleDownloadUrl } from '@/utils/download';
/**
* vue页面下载调用
* */
handleDownload(row) {this.$confirmBox('确定下载文件?', '提示').then(() => {handleDownloadUrl(row.url) // 调用下载}).catch(() => {})
},

        二、创建a标签下载

        通过创建a标签的方式,实现文件的下载

axios({url: '/export/userPort',data: {id: this.temp.id, all: this.temp.all},method: 'post',responseType: 'blob',headers: {'Authorization': getToken()}
}).then((response) => {// 下载文件const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })const objectUrl = URL.createObjectURL(blob) // 创建URLconst link = document.createElement('a')link.href = objectUrl// 这里是获取后台传过来的文件名link.setAttribute('download', 'xxx.xlsx')link.click() // 下载文件URL.revokeObjectURL(objectUrl) // 释放内存
}).catch((error) => {console.log(error);
})

        三、使用js-file-download下载

        这个方法是一个现成的下载组件,使用之前要先安装,在导入,然后跟方法二一样,接口调用成功后,调用方法fileDownload即可。

npm install js-file-download --save // 安装
import fileDownload from 'js-file-download' // 导入
axios({url: '/export/userPort',data: {id: this.temp.id, all: this.temp.all},method: 'post',responseType: 'blob',headers: {'Authorization': getToken()}
}).then((response) => {fileDownload(response.data, 'xxx.xls') // 接口调用成功时下载
}).catch((error) => {console.log(error);
})

相关内容

热门资讯

疯了吧?伊利推出“大蒜味”优酸... “喝牛奶吗?大蒜味的那种。” 如果有人这样问你,你大概率会觉得他疯了。但国民品牌伊利告诉你:我们是认...
鸡蛋都快配不上番茄了 “一个还算好看点的番茄就要5块多,太贵了。” 昨天早上听同事吐槽说最近番茄有点贵,好奇去查了一下,猛...
杭州人喜爱的它,最肥厚爽滑的好... 寒风渐紧,眼下正是带鱼最肥的好时节。冬至以后,水温下降,这个季节的带鱼长了肥膘,最是肥美。近日,东海...
十分钟再谈预制菜之六:“广东年... 年夜饭的变迁,是观察中国社会最温情的窗口。当家庭结构变小、生活节奏变快,那份对团圆和年味的执着,正呼...
怎么,它也涨疯了? 怎么,它也涨疯了? “一个还算好看点的番茄就要5块多,太贵了。”今早听同事吐槽说最近番茄有点贵,好...