vue实现文件下载

springboot整合vue实现上传下载文件 springboot整合vue实现上传下载文件 文章目录springboot整合vue实现上传下载文件1上传下载文件api文件2.上传大文件配置3.vue前端主要部分 环境 springboot 1.5.x 完整代码下载: springboot整合vue实现上传下 1上传下载文件api文件 设置上传路径,如例子: private final static String rootPath =... 阅读详情

引言

最近在自己做项目的需求的过程中,需要vue+springboot实现文件的下载功能(导出博客文件)。

问题重现

在我后端文件下载接口开发完成后,使用vue前端去进行对接时出现了问题。

我是直接使用的axios去进行请求接口,请求接口后返回的状态码是200,但是就是不会自动下载文件。

起初我一直以为是我后端接口有问题,后才发现我们如果在vue中通过button发送axios请求文件下载的接口,那么是不会去进行自动下载文件的,必须要在a标签中去进行调用,才会自动下载文件,所以我们在axios请求完成后,在js中去调用a标签即可

问题解决

经过寻找资料,发现vue通过axios请求后是不会自动下载文件的,需要我们自己去做一些配置(只能通过a标签去进行文件的下载)

  1. axio中需要添加responseType,以此来辨别它的请求类型

    responseType为blob即可

    export function exportArticleList(data){
      return request({
        url: '/article/exportArticleList',
        method: 'post',
        data: data,
        responseType: 'blob'
      })
    }
    
  2. 后端返回response后,我们需要做些处理,我们需要使用a标签将其打开下载,如下示例:

    由于我前端使用的vue-admin-template模板,所以直接在request.js中进行response统一处理即可。

    如果返回的response中的headers中content-type的值为application/octet-stream;charset=UTF-8,则我们判定它有需要下载的文件,然后我们调用a标签来进行下载

    **注意:**vue的response可能获取不到content-disposition的值,我们需要在后端进行对于处理才行

    后端处理:

    //在vue的response中显示Content-Disposition
    response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
    // 设置在下载框默认显示的文件名
    response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFileName, "UTF-8")+".zip");
    
    const res = response.data
    
    console.log(response)
    //获取请求的类型
    const respContentType = response.headers['content-type']
    if (respContentType === 'application/octet-stream;charset=UTF-8') {
      console.log("有文件类型的流")
      if (!res) {
        return
      }
      //由于后台返回文件名称是通过response返回的
      //因此需要从response headers中content-disposition响应头中获取文件名称fileName
      let fileName = response.headers["content-disposition"];
      fileName = fileName.split('=')[1]
      const url = window.URL.createObjectURL(new Blob([res], {
        type: 'application/octet-stream;charset=UTF-8'
      }))
      const link = document.createElement('a')
      link.style.display = 'none'
      link.href = url
     //decodeURIComponent解决文件名的url转码问题
      link.setAttribute('download', decodeURIComponent(fileName))
      document.body.appendChild(link)
      link.click()
      document.body.removeChild(link)
      return
    }
    

解决完成

点击导出可以成功下载文件

image-20221212114049652

其它问题

URL转码问题

由于后端传来前端的文件名是经过url转码的,所以中文会出现乱码的情况

vue中使用如下命令即可进行解码

// 解码用
decodeURIComponent(str)
// 编码用
encodeURIComponent(str)
vue请求接口返回文件流并进行下载 vue项目,有两种方式实现请求接口返回文件流并进行下载: 第一种:使用a标签的特性,使用链接实现 第二种:下载文件流的方式 阅读详情

相关推荐

#vue3 实现前端下载excel文件模板功能

前端无需通过后端接口,即可实现模板下载功能。 通过构造一个 JSON 对象,使用前端常用的第三方库 xlsx,可以直接将该 JSON 对象转换成 Excel 文件,让用户下载模板

ZHENGCHUNJUN的博客 3485

Vue中下载不同文件的几种方式

当在Vue中需要实现文件下载功能时,我们可以有多种方式来完成。下面将介绍五种常用的方法。

前端程序猿的博客 2万+

vue项目中文件流方式下载文件功能实现

vue文件下载功能实现前端实现关键代码后端实现关键代码 前端实现关键代码 vue组件中首先引入相应的依赖 import axios from "axios"; const FileSaver = require("file-saver"); 下载代码 axios({ url: url, timeout: 10000, method: "get", headers, responseType: "blob", })

2404

vue 中 文件下载方式总结

文件下载方式 1. window.location.href 方式 注意: 文件名称为中文时要使用 encodeURI 转码; 下载文件格式为 图片 或 txt 时文件会直接打开; 根据文件名下载: window.location.href = "/zuul/dsms/SXMS/留置人员登记.xlsx"; 文件名有中文: window.location.href = `/zuul/dsms/SXMS/${encodeURI("留置人员登记.xlsx")}`; 根据接口及参数下载(文件名未知):

huanxin_94的博客 9001

前端实现文件下载功能Vue

由于最近遇到项目是从服务器下载相关模板文件,所以在这里进行相关问题的总结。 就拿我要下载的xls文件为例。 往往我们可以通过a标签进行文件的下载,地址就是我们在静态文件中存放文件的地址 <a :href="downloadURL" download="MATERIAL.xls" class="download_btn">下载模板 </a> 其中downloadURL为我们静态文件的地址(往往我们把静态文件放到static或public下,这样打包文件找起来会方便

Deku_Ln的博客 2326

vue 实现文件流下载功能 前端实现文件流下载

【代码】vue 实现文件流下载功能 前端实现文件流下载。

weixin_41346436的博客 1173

vue+springboot使用文件流实现文件下载

本次将使用vue和springboot通过文件流的方式教大家怎么去实现文件的下载

xc9711的博客 1万+

保姆级教程:在iQuant平台从零写一个Python量化策略(附完整代码示例)

本文提供了一份详细的iQuant平台Python量化策略开发教程,从环境准备到策略实现、回测优化,再到实盘运行,每个步骤都配有完整代码示例和常见问题解决方案。适合量化交易新手快速上手,掌握双均线策略等核心开发技巧。

weixin_42783709的博客 477

VUE实现文件下载;zip文件也可以下载,干货

// vue 中的调用方法 handleModelUpload() { alert('下载zip模板') axios({ method: 'GET', url: '/business/api/download', // params: { // // eslint-disable-next-line no-undef // reportRuleId: row.reportRuleId ..

AntdonYu的博客 5816

机器学习系列(1)_逻辑回归初步

1、总述 逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。 2、由来     要说逻辑回归,我们得追溯到线性回归,想必大家对线性回归都有一定的了解,即对于多维空间中存在的样本点,我们用特征的线性组合去拟合空间中点的分布和轨迹。如下图所示:     线性回归能对连续值结果进行预测,

寒小阳 13万+

将Python爬取的数据导入钉钉多维表

摘要:本文介绍将Python爬取的数据导入钉钉多维表的完整解决方案。首先通过requests库爬取数据并解析为结构化格式,然后使用钉钉开放平台API对接多维表。关键步骤包括获取app_key、app_secret等凭证,通过OAuth2获取access_token,以及批量写入记录。文章详细说明了参数获取位置、字段类型匹配、权限配置等注意事项,并提供了错误处理建议和性能优化方法。适用于需要将网络数据同步到钉钉多维表的开发场景。

IT深耕十余载,大道之简 2126

vue实现文件下载功能

对于Vue中实现一般的下载功能很简单,一般为了方便,在项目文件的api.js配置文件中添加一个下载方法即可,这里以以下download方法为例。将download这部分方法添加到api.js文件中即可。 api.js配置 export default { // 下载关键代码 download(url, params) { return new Promise((resolve, reject) => { axios({ // 和后端协商好下载方法po

RequesToGod的博客 1万+

Ansys Zemax实战:5步搞定多模光纤耦合效率优化(附IMAE操作数详解)

本文详细介绍了使用Ansys Zemax优化多模光纤耦合效率的5个关键步骤,包括几何图像分析设置、IMAE操作数应用及偏振效应处理。通过实战案例解析,帮助工程师快速掌握光纤耦合效率提升技巧,特别针对IMAE操作数的配置保存机制和菲涅尔损耗控制进行深度讲解。

potato的博客 688

Vue实现下载文件

Vue实现下载功能

weixin_52703987的博客 5687

遗传算法详解 附python代码实现

遗传算法 遗传算法是用于解决最优化问题的一种搜索算法。从名字来看,遗传算法借用了生物学里达尔文的进化理论:”适者生存,不适者淘汰“,将该理论以算法的形式表现出来就是遗传算法的过程。 问题引入 上面提到遗传算法是用来解决最优化问题的,下面我将以求二元函数: def F(x, y): return 3*(1-x)**2*np.exp(-(x**2)-(y+1)**2)- 10*(x/5 - x**3......

ha_ha_ha233的博客 22万+

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5877

vue实现下载文件

vue实现下载文件

weixin_42536961的博客 7871

coredump文件的原理是啥

Core Dump(核心转储)是操作系统在程序崩溃(如段错误、非法指令等)时自动生成的一个文件,它包含了程序崩溃瞬间的。通过 core dump,开发者可以像“时间回溯”一样检查程序崩溃瞬间的状态,是调试复杂问题的利器!终止时,Linux 内核会生成 core 文件。不会生成 core dump,因为它们是“优雅终止”信号。这样 core 文件会直接压缩存储,节省磁盘空间。的文件(类似可执行文件),可以用。Core 文件本质上是一个。

二进制君 374

vue 文件下载实现

vue 实现 前端文件下载

先完成,再完美—60分比0分强100倍 1857

行人检测模型在海思平台上的部署:从 PyTorch 到 NNIE 深度优化与实践

摘要 本文详细介绍行人检测模型从PyTorch到海思NNIE平台的部署流程。首先分析了行人检测面临的挑战(尺度变化、遮挡、姿态多样性等)及边缘部署的优势(实时性、隐私保护等)。重点阐述了模型转换过程:PyTorch→ONNX→Caffe→NNIE-WK,其中PyTorch转ONNX需注意评估模式设置、虚拟输入匹配、操作集版本选择等关键点。文章旨在帮助开发者在海思3516D芯片上实现高效的行人检测,克服部署过程中的常见问题,最终实现边缘设备的实时目标检测能力。

FJN110的博客 214

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue实现zip文件下载

el-button按钮 <el-button size="mini" type="success" @click="downloadHandle(fileName, fileLocation)">下载</el-button> js处理说明 request 拦截器 request.js axios 引入并创建 axios 实例,request 拦截器添加 import axios from 'axios' // 创建axios实例 const service = axios.

u013526643的专栏 3202

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

vue前端文件下载实现

vue下载文件前后端代码

challenglistic的博客 5904

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringBoot+Vue实现文件上传下载功能

SpringBoot+Vue实现文件上传下载功能,功能有:单文件及多文件上传、文件下载、音频文件在线播放。

IQ_Kuo的博客 6461
上一篇: vue-cli中学习vue
下一篇: vue中实现定时器功能
爱学习的大雄
博客等级 码龄6年 421粉丝 262原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的大雄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值