vue+springboot 前后端分离 上传文件处理后再下载,并且传递参数
vue代码
<template><div><input type="file" ref="fileInput" accept=".json"/><el-button @click="upload">上传</el-button></div>
</template><script>
export default {name: "Upgrade",data() {return {}},methods: {upload() {const files = this.$refs.fileInput.filesvar formData = new FormData();let config = {headers: {"Content-Type": "multipart/form-data",},responseType: "blob", //这个很重要};formData.append("file", files[0]);formData.append("fromVersion", "3.2.1")formData.append("toVersion", "4.0.0")this.axios.post("/upgrade/apiConfig", formData, config).then((response) => {const link = document.createElement("a");let blob = new Blob([response.data], {type: "application/x-msdownload"});link.style.display = "none";link.href = URL.createObjectURL(blob);link.setAttribute("download", "apiConfig.json");document.body.appendChild(link);link.click();document.body.removeChild(link);});}}
}
</script><style scoped lang="less"></style>
springboot代码
@RequestMapping(value = "/apiConfig", produces = "application/json;charset=UTF-8")public void convertApiConfig(@RequestParam("file") MultipartFile file, @RequestParam("fromVersion") String fromVersion, @RequestParam("toVersion") String toVersion, HttpServletResponse response) {OutputStream os = null;try {String s = IOUtils.toString(file.getInputStream(), "utf-8");String content = upgradeService.upgradeApiConfig(s, fromVersion, toVersion);response.setContentType("application/x-msdownload;charset=utf-8");response.setHeader("Content-Disposition", "attachment; filename=api_config.json");os = response.getOutputStream();os.write(content.getBytes("utf-8"));} catch (Exception e) {e.printStackTrace();} finally {try {if (os != null)os.close();} catch (IOException e) {e.printStackTrace();}}}
相关文章:
vue+springboot 前后端分离 上传文件处理后再下载,并且传递参数
vue代码 <template><div><input type"file" ref"fileInput" accept".json"/><el-button click"upload">上传</el-button></div> </template><script> export default {name: "…...
【Linux操作系统】举例解释Linux系统编程中文件io常用的函数
在Linux系统编程中,文件IO操作是非常常见和重要的操作之一。通过文件IO操作,我们可以打开、读取、写入和关闭文件,对文件进行定位、复制、删除和重命名等操作。本篇博客将介绍一些常用的文件IO操作函数。 文章目录 1. open()1.1 原型、参数及…...
Ubuntu和centos版本有哪些区别
Ubuntu和CentOS是两个非常流行的Linux发行版,它们在一些方面有一些区别,如下所示: CentOS的版本发布周期相对较长,主要是因为它是基于RedHatEnterpriseLinux(RHEL)的。这意味着在RHEL发布后才能推出对应的CentOS版本。而Ubuntu则在…...
Netty:ChannelHandler抛出异常,对应的channel被关闭
说明 使用Netty框架构建的socket服务端在处理客户端请求时,每接到一个客户端的连接请求,服务端会分配一个channel处理跟该客户端的交互。如果处理该channel数据的ChannelHandler抛出异常没有捕获,那么该channel会关闭。但服务端和其它客户端…...
pytest结合 allure 打标记之的详细使用
前言 前面我们提到使用allure 可以生成漂亮的测试报告,下面就Allure 标记我们做详细介绍。 allure 标记 包含:epic,feature, story, title, testcase, issue, description, step, serverity, link, attachment 常用的标记 allure.feature…...
【linux】2 软件管理器yum和编辑器vim
目录 1. linux软件包管理器yum 1.1 什么是软件包 1.2 关于rzsz 1.3 注意事项 1.4 查看软件包 1.5 如何安装、卸载软件 1.6 centos 7设置成国内yum源 2. linux开发工具-Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行…...
Angular中的ActivatedRoute和Router
Angular中的ActivatedRoute和Router解释 在Angular中,ActivatedRoute和Router是两个核心的路由服务。他们都提供可以用来检查和操作当前页面路由信息的方法和属性。 ActivatedRoute ActivatedRoute是一个保存关于当前路由状态(如路由参数、查询参数以…...
Layui精简版,快速入门
目录 LayUI之入门 1.什么是layui 2.layui入门 3.自定义模块 4.用户登录 5.主页搭建 LayUI之动态树 main.jsp main.js LayUI之动态选项卡 1.选项卡 main.jsp main.js 2.用户登录 User.java UserDao.java UserAction.java R.java LayUI之用户管理 1.用户查询…...
SSH远程Ubuntu教程
SSH远程Ubuntu教程 目录 什么是SSH?SSH的优点在Ubuntu上启用SSH服务连接到远程Ubuntu服务器SSH的常用命令 1. 什么是SSH? SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地远程登录和执行命令。它使用…...
NPM与外部服务的集成(下)
目录 1、撤消访问令牌 2、在CI/CD工作流中使用私有包 2.1 创建新的访问令牌 持续整合 持续部署 交互式工作流 CIDR白名单 2.2 将令牌设置为CI/CD服务器上的环境变量 2.3 创建并签入特定于项目的.npmrc文件 2.4 令牌安全 3、Docker和私有模块 3.1 背景:运…...
Flask Web开发实战(狼书)| 笔记第1、2章
前言 2023-8-11 以前对网站开发萌生了想法,又有些急于求成,在B站照着视频敲了一个基于flask的博客系统。但对于程序的代码难免有些囫囵吞枣,存在许多模糊或不太理解的地方,只会照葫芦画瓢。 而当自己想开发一个什么网站的时&…...
PHP利用PCRE回溯次数限制绕过某些安全限制实战案例
目录 一、正则表达式概述 有限状态自动机 匹配输入的过程分别是: DFA(确定性有限状态自动机) NFA(非确定性有限状态自动机) 二、回溯的过程 三、 PHP 的 pcre.backtrack_limit 限制利用 例题一 回溯绕过步骤 &…...
读书笔记 |【项目思维与管理】➾ 顺势而动
读书笔记 |【项目思维与管理】➾ 顺势而动 一、企业步入“终结者时代”二、过去成功的经验也许是最可怕的三、做好非重复性的事四、适应客户是出发点五、向知识型企业转变六、速度是决胜条件 💖The Begin💖点点关注,收藏不迷路💖 …...
开发利器:接口代理和接口模拟工具
前端开发过程往往需要和后端对接接口,而且一般开发都是前后端同步开发,这就难免出现接口提供滞后的问题,从而导致我们前端开发 UI 开发完成而无法调试的问题。面对这种问题,一般我们会有很多种方式处理,比如在代码中写一些模拟数据,或者打断点调试,或者用代理工具 Fidde…...
MAVEN利器:一文带你了解MAVEN以及如何配置
前言: 强大的构建工具——Maven。作为Java生态系统中的重要组成部分,Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用,Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等…...
解决 adb install 错误INSTALL_FAILED_UPDATE_INCOMPATIBLE
最近给游戏出包,平台要求 v1 签名吧,AS 打包后,adb 执行安装到手机,我用的设备是google pixel6 , android 系统 13, 提示如下: adb install -r v5_android_202308161046.apk Performing Streamed Install a…...
学习Vue:Event Bus 与 Provide/Inject
在Vue.js中,兄弟组件通信是指两个没有直接父子关系的组件之间如何进行数据传递和通信。为了实现兄弟组件通信,我们可以借助Vue的一些特性,如Event Bus和Provide/Inject。让我们一起来深入了解这些方法,并通过实例来看看如何实现兄…...
Java 工具类之JSON key根据ASCII排序
Java按键值字典序排列 参数按照KEY值进行字典序排序(按照KEY值的ASCII码从小到大),并用&作为各参数之间的分隔符将参数拼接成字符串。这里用到了SortedMap,复制以下代码开箱即用~ /*** getSortedString 对参数按照Key进行ASCII排序* param jsonObject 请求参数…...
深兰科技提出新多模态谣言监测模型,刷新世界纪录
近日,深兰科技旗下深兰科技科学院投稿的《基于二部特定事件树的分层表示的谣言检测》(Rumor Detection With Hierarchical Representation on Bipartite Ad Hoc Event Trees)研究论文被全球人工智能领域*期刊《IEEE Transactions on Neural Networks and Learning S…...
【从零学习python 】33.装饰器的作用(二)
文章目录 再议装饰器4. 装饰器(decorator)功能5. 装饰器示例例1:无参数的函数例2:被装饰的函数有参数例3:被装饰的函数有不定长参数例4:装饰器中的return例5:装饰器带参数 进阶案例 再议装饰器 # 定义函数:完成包裹数据 def makeBold(fn):def wrapped():return &qu…...
深入ProtoBuf编译:从Google.Protobuf.dll到Protoc.exe的完整实践指南
1. ProtoBuf基础与编译环境搭建 Protocol Buffers(简称ProtoBuf)是Google开发的一种高效数据序列化工具。我第一次接触ProtoBuf是在处理微服务通信时,当时被它比JSON快3-5倍的序列化速度震惊了。简单来说,ProtoBuf就像是个智能的数…...
LLVM Pass快速入门(四):代码插桩
代码插桩项目需求:在函数运行时打印出运行的函数名项目目录如下/MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass3.cpp # pass 项目代码一,测试代码示例test.c#include <…...
告别数据孤岛:用RTKLIB str2str打通GNSS设备与上位机的通信全链路
高精度定位系统集成实战:RTKLIB str2str的数据枢纽架构设计 在自动驾驶测试场,一台搭载多传感器阵列的无人车正以厘米级精度重复着轨迹跟踪。工程师们通过监控屏观察着实时定位数据流——Ublox接收机的原始观测值、Septentrio的RTCM差分信号、IMU的惯性数…...
避坑指南:Dify 1.3.1 Docker-Compose部署时,除了镜像拉取慢,你还会遇到的3个典型错误
Dify 1.3.1 Docker-Compose部署实战:3个隐藏陷阱与深度排错指南 当你决定在生产环境部署Dify 1.3.1时,Docker-Compose看似简单的up -d命令背后可能暗藏玄机。本文将从真实故障场景出发,解剖那些官方文档未曾提及的"暗坑"——它们不…...
结合LSTM时序建模:深入理解SOONet处理视频连续性的机制
结合LSTM时序建模:深入理解SOONet处理视频连续性的机制 你有没有想过,为什么有时候看视频,AI能精准地知道“一个人从拿起杯子到喝水”这个完整动作的起止点?这背后,不仅仅是识别单张图片里的人在做什么,更…...
Lychee Rerank MM惊艳效果:工业图纸图像与技术文档段落的跨模态重排序
Lychee Rerank MM惊艳效果:工业图纸图像与技术文档段落的跨模态重排序 1. 引言:当图纸遇见文字的多模态匹配革命 想象一下这样的场景:你手头有一张复杂的工业设备图纸,需要从海量技术文档中找到与之最匹配的说明段落。传统的关键…...
学术研究助手:OpenClaw+nanobot自动抓取论文与生成综述
学术研究助手:OpenClawnanobot自动抓取论文与生成综述 1. 为什么需要自动化文献处理 作为一名经常需要追踪前沿研究的科研人员,我发现自己每周要花至少8小时在arXiv上筛选论文、阅读摘要、整理笔记。最痛苦的是,当我需要撰写某领域的综述时…...
UE5 Pixel Streaming配置HTTPS全流程:从证书申请到成功运行(避坑指南)
UE5 Pixel Streaming HTTPS配置实战:从零搭建到安全部署的完整指南 在虚幻引擎5(UE5)的实时交互应用开发中,Pixel Streaming技术正成为连接3D内容与终端用户的重要桥梁。而HTTPS协议的配置,则是确保数据传输安全性的关…...
Verilog specify语法实战:如何用5分钟搞定模块路径延时配置(附常见坑点)
Verilog specify语法实战:5分钟掌握模块路径延时配置与避坑指南 在数字电路设计中,精确控制信号传播延迟是确保时序收敛的关键环节。作为硬件描述语言的核心特性之一,Verilog的specify块提供了一种声明式方法来定义模块引脚间的路径延迟&…...
Linux Docker Compose 部署.NET+Vue+MySQL+Redis+Nginx 完整记录(亲测无坑)
写在前面:为什么用 Docker Compose?比单容器部署好在哪? 做容器化部署时,单靠docker run命令逐个启动 MySQL、Redis、后端、Nginx 容器会非常繁琐 —— 不仅要记大量命令参数,还得手动控制容器启动顺序、配置网络联动…...
