当前位置: 首页 > news >正文

spring webflux文件上传与下载

1、文件上传:

Controller:

 @PostMapping("/import")public void importImage(@RequestPart("file") FilePart filePart) {imageService.importImage(filePart);}

Service:

   public void importImage(FilePart filePart) {File saveFile = new File("/tmp/a.txt");if (!copyFile(filePart, saveFile)) {throw new OpsManagerException("文件保存失败!");}}
public boolean copyFile(FilePart filePart, File tempFile) {try {if (tempFile.exists()) {tempFile.delete();}tempFile.createNewFile();AsynchronousFileChannel channel = AsynchronousFileChannel.open(tempFile.toPath(), StandardOpenOption.WRITE);AtomicBoolean copyFinish = new AtomicBoolean(false);DataBufferUtils.write(filePart.content(), channel, 0).doOnComplete(() -> copyFinish.set(true)).subscribe();AtomicInteger atomicInteger = new AtomicInteger(0);while (!copyFinish.get()) {Thread.sleep(5000);atomicInteger.addAndGet(1);if (atomicInteger.get() > 720) {throw new OpsManagerException("文件过大");}}return true;} catch (Exception e) {log.error("save upload file error", e);return false;}}

2、文件下载:

Controller:

  @GetMapping("/export")public Mono<Void> downloadFile(ServerHttpResponse response) {File file = new File("/tmp/workplace.zip");return TaskUtils.downloadFile(file, response);}

Service:

public static Mono<Void> downloadFile(File file, ServerHttpResponse response) {try {response.getHeaders().set(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8"));response.getHeaders().setContentType(MediaType.APPLICATION_OCTET_STREAM);response.getHeaders().set(HttpHeaders.CONTENT_LENGTH, "" + file.length());Flux<DataBuffer> dataBufferFlux = Flux.create((FluxSink<DataBuffer> emitter) -> {InputStream in = null;try {in = new FileInputStream(file);byte[] buffer = new byte[1024 * 1024]; // Adjust buffer size based on your needswhile (in.read(buffer) != -1) {emitter.next(response.bufferFactory().wrap(buffer));}emitter.complete();} catch (IOException e) {emitter.error(e);} finally {if (in != null) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}});return response.writeAndFlushWith(Mono.just(dataBufferFlux));} catch (IOException ex) {logger.error("download file error!", ex);throw new RuntimeException("download file error!");}}

相关文章:

spring webflux文件上传与下载

1、文件上传&#xff1a; Controller&#xff1a; PostMapping("/import")public void importImage(RequestPart("file") FilePart filePart) {imageService.importImage(filePart);}Service&#xff1a; public void importImage(FilePart filePart) {Fi…...

Android MVVM+coroutine+retrofit+flow+hilt

文章目录 Android MVVMcoroutineretrofitflowhilt概述依赖注入层数据层视图层模型视图层代码下载 Android MVVMcoroutineretrofitflowhilt 概述 代码结构&#xff1a; 依赖注入层 数据库&#xff1a; Module InstallIn(SingletonComponent::class) class DBModule {Singleto…...

elasticsearch副本和分片

1.文档冲突 当我们使用index API更新文档&#xff0c;可以一次性读取 修改索引副本 rootes-node3:~# curl -XPUT http://192.168.1.136:9200/es-syslog-2023.08.26/_settings -H "Content-Type: application/json" -d { > "settings": { > …...

【Python】zip

Python中的zip()函数可以将多个可迭代对象打包成一个元组序列&#xff0c;然后返回这些元组序列组成的迭代器。zip()函数的语法如下&#xff1a; zip(*iterables)其中&#xff0c;iterables是可迭代对象&#xff0c;可以是多个&#xff0c;也可以是一个。zip()函数将返回一个迭…...

西安安泰——ATA-1220E宽带放大器

ATA-1220E宽带放大器简介 ATA-1220E是一款可放大交直流信号的差分通道宽带放大器。其最大输出电压 60Vp-p(30Vp)&#xff0c;最大输出电流1Ap&#xff08;>50Hz&#xff09;。电压增益数控可调&#xff0c;一键保存设置&#xff0c;提供了方便简洁的操作选择&#xff0c;可…...

数据结构和算法专题---4、限流算法与应用

本章我们会对限流算法做个简单介绍&#xff0c;包括常用的限流算法&#xff08;计数器、漏桶算法、令牌桶案发、滑动窗口&#xff09;的概述、实现方式、典型场景做个说明。 什么是限流算法 限流是对系统的一种保护措施。即限制流量请求的频率&#xff08;每秒处理多少个请求…...

亚信安慧AntDB受邀分享核心业务系统全域数据库替换实践

近日&#xff0c;亚信安慧AntDB数据库凭借丰富的核心业务系统升级替换能力和经验&#xff0c;受邀参与IT168组织的第三期“国产软硬件升级替换之路”的直播沙龙。 亚信安慧AntDB数据库相关负责人发表《基于AntDB的CRM全域数据库替换实践》的精彩演讲&#xff0c;通过通信行业率…...

1.uniapp基础

1.uniapp基础 官方文档&#xff1a;uni-app官网 1.1开发工具 &#xff08;1&#xff09;工具&#xff1a; HBuilderX HBuilderX-高效极客技巧 1.2 新建项目 &#xff08;1&#xff09; 文件》新建项目 ​ &#xff08;2&#xff09;选择相应的配置信息&#xff0c;填写项目根路…...

typescript中的策略模式

typescript中的策略模式 当我们需要以整洁、易于维护和易于调试的方式构建应用程序时&#xff0c;使用设计模式是一种非常好的方式。 在本文中&#xff0c;我们的目标是阐明如何将策略模式无缝地集成到我们的应用程序中。如果我们熟悉依赖性注入&#xff0c;可能会发现策略模…...

Hadoop学习笔记(HDP)-Part.16 安装HBase

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...

C语言练习记录(蓝桥杯练习)(小蓝数点)

目录 小蓝数点 第一题程序的输出结果是&#xff1f;: 第二题下面代码的执行结果是什么&#xff1f;: 第三题下面代码的执行结果是什么&#xff1f;: 第四题关于关系操作符说法错误的是&#xff1f;: 第五题对于下面代码段&#xff0c;y的值为&#xff1f; 第六题sum 21 …...

RPG项目01_层级设置

基于“RPG项目01_UI面板Game”&#xff0c; 找到狼人 添加组件&#xff0c;让狼人一定区域自动跟随主角进行攻击 解释&#xff1a;【烘培蓝色】因为如果什么都不做就会被烘培成蓝色对应的功能就是 可修改区域功能 当将区域设置成不可行走状态&#xff0c;则不为蓝色 烘培&…...

相关基础知识

本文引注&#xff1a; https://zhuanlan.zhihu.com/p/447221519 1.方差 2.自协方差矩阵 3.自相关矩阵 4.互协方差矩阵 5.互相关矩阵 6.相关系数 7.自相关函数、自协方差函数与功率谱密度 8.互相关函数、互协方差函数与互功率谱密度...

基于单片机的智能健康监测手环的设计

目 录 1 绪论... 2 1.1 引言... 2 1.2 智能手环的国内外研究现状... 2 1.3 课题的研究意义... 3 1.4 本文的研究内容和章节安排... 4 2 智能手环系统设计方案... 5 2.1 系统总体设计方案... 5 2.2 主芯片选择... 5 2.3 显示方案的选择... 6 2.4 倾角传感器的选择... 6 2.5 心率…...

boost-字符串处理-判断-查找-裁剪-删除-替换-分割-合并

文章目录 1.判断1.1.equals1.2.all1.3.starts_with1.4.ends_with1.5.contains 2.大小写转换3.字符串删除4.字符串替换5.字符串查找6.字符串修剪7.字符串分割8.字符串合并9.总结 1.判断 判别式函数和分类函数大多数都是以is_开头&#xff0c;这些函数如下&#xff1a; 判别式函…...

Django 开发 web 后端,好用过 SpringBoot ?

基础语法 Django&#xff08;Python&#xff09;&#xff1a;以简洁和直观著称。它允许更快的开发速度&#xff0c;特别适合快速迭代的项目。例如&#xff0c;一个简单的视图函数&#xff1a; from django.http import HttpResponsedef hello_world(request):return HttpRespon…...

【矩阵】54.螺旋矩阵(顺时针打印矩形元素)

题目 class Solution {public List<Integer> spiralOrder(int[][] matrix) {int m matrix.length, n matrix[0].length;int leftUpM 0, leftUpN 0, rightDownM m - 1, rightDownN n - 1;List<Integer> res new ArrayList<>();while (leftUpM < ri…...

【数据中台】开源项目(5)-Amoro

介绍 Amoro is a Lakehouse management system built on open data lake formats. Working with compute engines including Flink, Spark, and Trino, Amoro brings pluggable and self-managed features for Lakehouse to provide out-of-the-box data warehouse experience,…...

_WorldSpaceLightPos0的含义 UNITY SHADER

_WorldSpaceLightPos0 为当前平行光的方向&#xff0c;方向是从光源到照射的方向。 因此&#xff0c;如果要算法线和平行光之间的夹角&#xff0c; 则需要首先将归一化的_WorldSpaceLightPos0去负数。这样才能继续去计算。 也就是&#xff1a; fixed3 reflectdirnormalize…...

iOS不越狱自动挂机

自动挂机在电脑上或者安卓手机上都相对容易&#xff0c;而在不越狱的iOS设备上还是有点难度的。 此方法不是我原创&#xff0c;详情见&#xff1a; 【苹果党福音&#xff0c;ios也能用的挂机脚本】 https://www.bilibili.com/video/BV1sv4y1P7TL/?share_sourcecopy_web&v…...

智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鼠群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…...

FL Studio中如何录音的技巧,让你的声音更加出众哦!

​ Hey小伙伴们&#xff01;今天我要和大家分享一下在FL Studio中如何录音的技巧&#xff0c;让你的声音更加出众哦&#xff01; 编曲软件FL Studio 即“Fruity Loops Studio ”&#xff0c;也就是众所熟知的水果软件&#xff0c; 全能音乐制作环境或数字音频工作站&#xff0…...

前端React基础面试题

1,说说react里面bind函数与箭头函数 bind 由于在类中,采用的是严格模式,所以事件回调的时候会丢失this指向,指向的undefined,需要使用bind来给函数绑定上当前实例的this指向。 箭头函数的this指向上下文,所以永久能拿到当前组件实例的。this指向我们可以完美的使用箭头…...

【1day】致远A6系统任意文件下载漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

朝花夕拾华山平台流水账

2022年8月25日&#xff0c;我加入了诚迈科技&#xff08;南京&#xff09;&#xff0c;加入了华山平台。 跟我一起入职平台的还有三个小伙伴&#xff1a;小帅、小阳、小甘。 小帅能力很强&#xff0c;前后端都会&#xff0c;入职各种考试工具人。 小阳毕业没多久&#xff0c;一…...

云原生周刊:K8s 的 YAML 技巧 | 2023.12.4

开源项目推荐 Helmfile Helmfile 是用于部署 Helm Chart 的声明性规范。其功能有&#xff1a; 保留图表值文件的目录并维护版本控制中的更改。将 CI/CD 应用于配置更改。定期同步以避免环境偏差。 Docketeer 一款 Docker 和 Kubernetes 开发人员工具&#xff0c;用于管理容…...

Leetcode.2477 到达首都的最少油耗

题目链接 Leetcode.2477 到达首都的最少油耗 rating : 2012 题目描述 给你一棵 n n n 个节点的树&#xff08;一个无向、连通、无环图&#xff09;&#xff0c;每个节点表示一个城市&#xff0c;编号从 0 0 0 到 n − 1 n - 1 n−1 &#xff0c;且恰好有 n − 1 n - 1 n−…...

sizeof()、strlen()、length()、size()的区别(笔记)

​ 上面的笔记有点简陋&#xff0c;可以看一下下面这个博主的&#xff1a; c/c中sizeof()、strlen()、length()、size()详解和区别_csize,sizeof,length_xuechanba的博客-CSDN博客...

Redis击穿(热点key失效)

Redis击穿是指在高并发情况下&#xff0c;一个键在缓存中过期失效时&#xff0c;同时有大量请求访问该键&#xff0c;导致所有请求都落到数据库上&#xff0c;对数据库造成压力。这种情况下&#xff0c;数据库可能无法及时处理这些请求&#xff0c;导致性能下降甚至崩溃。 为了…...

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测&#xff0…...

网站当前位置怎么做/网络推广员每天的工作是什么

HTML 速查列表. 你可以可以打印它&#xff0c;以备日常使用。HTML 基本文档文档标题基本标签(Basic Tags)最大的标题. . . . . . . . . . . . 最小的标题这是一个段落。(换行)(水平线)文本格式化(Formatting)粗体文本计算机代码强调文本斜体文本键盘输入预格式化文本更小的文本…...

网站建设及优化教程/搜狗站长管理平台

1、什么是函数&#xff1a; 函数是一个功能、是一个行为、是一个动作。 函数就是一个具有名称的功能代码的集合。 一段用来解决某一个问题的代码或者指令&#xff0c;具有名称的集合。 2、 为什么使用函数&#xff1a; 减少代码重复&#xff01;&#xff01;&#xff01; 所…...

深圳发布稳增长措施/seo关键字优化技巧

前端小伙伴们有没有遇到过这样的场景&#xff0c;iviewUI组件库中select双向绑定数据时&#xff0c;修改了绑定值&#xff0c;但是页面中渲染的值还是之前的值&#xff0c;不管是去打印还是使用vue插件去查看变量&#xff0c;均显示绑定值已修改&#xff0c;可是页面始终显示修…...

发明迷网站豆渣做豆腐/seo关键词排名软件流量词

最近一位想跳槽大厂的老程序员朋友面试了几家发现&#xff1a;6年前面试最常问的并且可以顺利拿到高薪的技能是 Dubbo &#xff0c;2年前面试&#xff0c;只要你简历上有 Spring Cloud 项目的相关经验,肯定会打动面试官&#xff0c;现在呢&#xff1f;简历上有Dubbo和简单的Spr…...

咨询网站 模板/环球网

在上次的分享中&#xff0c;介绍了模型建立与使用梯度下降法优化参数、梯度校验&#xff0c;以及一些超参数的经验。 本节课的主要内容&#xff1a; 1链式法则 2深度学习框架中链式法则 3全连接神经网络 1、链式法则 目前我们所处的阶段&#xff1a; 学习了SVM softmax两个模型…...

好的html5网站/seo虚拟外链

matplotlib 是python最著名的绘图库&#xff0c;它提供了一整套和matlab相似的命令API&#xff0c;十分适合交互式地行制图。而且也可以方便地将它作为绘图控件&#xff0c;嵌入GUI应用程序中。它的文档相当完备&#xff0c;并且Gallery页面中有上百幅缩略图&#xff0c;打开之…...