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

Knife4j系列--解决不显示文件上传的问题

原文网址:Knife4j系列--解决不显示文件上传的问题_IT利刃出鞘的博客-CSDN博客

简介

本文介绍使用Knife4j时无法上传文件的问题。

问题复现

依赖

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>

代码

package com.example.demo.business.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@Api(tags = "文件")
@RestController
@RequestMapping("file")
public class FileController {@ApiOperation("上传文件")@PostMapping("upload")public void upload(MultipartFile file) {}
}

结果

 ​​​

可以看到,无法上传文件。 

解决方案

在入参上添加注解@RequestPart

package com.example.demo.business.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@Api(tags = "文件")
@RestController
@RequestMapping("file")
public class FileController {@ApiOperation("上传文件")@PostMapping("upload")public void upload(@RequestPart MultipartFile file) {}
}

结果

备注

网上有人说需要在方法上加@ApiImplicitParam注解,如下:

package com.example.demo.business.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@Api(tags = "文件")
@RestController
@RequestMapping("file")
public class FileController {@ApiOperation("上传文件")@PostMapping("upload")@ApiImplicitParam(name = "file", dataTypeClass = MultipartFile.class, paramType = "form")public void upload(@RequestPart MultipartFile file) {}
}

经我测试,这个不需要加。只在参数上加@RequestPart即可。

相关文章:

Knife4j系列--解决不显示文件上传的问题

原文网址&#xff1a;Knife4j系列--解决不显示文件上传的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍使用Knife4j时无法上传文件的问题。 问题复现 依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-…...

深入学习Mysql引擎InnoDB、MylSAM

目录 一、什么是MySQL 二、什么是InnoDB 三、什么是MyISAM 四、MySQL不同引擎有什么区别 一、什么是MySQL MySQL是一种广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是由瑞典MySQL AB公司开发并推广&#xff0c;后来被Sun Microsystems收…...

第七章:SpringMVC中

第七章&#xff1a;SpringMVC中 7.1&#xff1a;SpringMVC的视图 ​ SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户SpringMVC视图的种类很多&#xff0c;默认有转发视图和重定向视图。 ​ 当工程引入jstl的依赖&…...

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…...

Electron 开发,报handshake failed; returned -1, SSL error code 1,错误

代码说明 在preload.js代码中&#xff0c;暴露参数给渲染线程renderer.js访问&#xff0c; renderer.js 报&#xff1a;ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说&#xff0c;跨进程传递消息&#xff0c;这意味…...

知识区博主转型——兼做知识区和改造区博主!!!!!

想脱单的进来&#xff0c;一起交流如何能脱单&#xff01;&#xff01;&#xff01; 为什么——我太羡慕有对象的人了哭死&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好&#xff…...

Resnet与Pytorch花图像分类

1、介绍 1.1数据集介绍 flower_data├── train│ └── 1-102&#xff08;102个文件夹&#xff09;│ └── XXX.jpg&#xff08;每个文件夹含若干张图像&#xff09;├── valid│ └── 1-102&#xff08;102个文件夹&#xff09;└── ─── └── XXX.jp…...

【NLP概念源和流】 03-基于计数的嵌入,GloVe(第 3/20 部分)

接续上文 【NLP概念源和流】 02-稠密文档表示(第 2/20 部分)...

【React】关于组件之间的通讯

&#x1f31f;组件化&#xff1a;把一个项目拆成一个一个的组件&#xff0c;为了便与开发与维护 组件之间互相独立且封闭&#xff0c;一般而言&#xff0c;每个组件只能使用自己的数据&#xff08;组件状态私有&#xff09;。 如果组件之间相互传参怎么办&#xff1f; 那么就要…...

item_get-小红薯-商品详情

一、接口参数说明&#xff1a; smallredbook.item_get&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/smallredbook/item_get 名称类型必须描述keyString是调用key&#xff08;http://o0…...

网络安全进阶学习第十课——MySQL手工注入

文章目录 一、MYSQL数据库常用函数二、MYSQL默认的4个系统数据库以及重点库和表三、判断数据库类型四、联合查询注入1、具体步骤&#xff08;靶场演示&#xff09;&#xff1a;1&#xff09;首先判断注入点2&#xff09;判断是数字型还是字符型3&#xff09;要判断注入点的列数…...

2.3 网络安全协议

数据参考&#xff1a;CISP官方 目录 OSI七层模型TCP/IP体系架构TCP/IP安全架构 一、OSI七层模型 简介 开放系统互连模型&#xff08;Open System Interconnection Reference Model&#xff0c;OSI&#xff09;是国际标准化组织&#xff08;ISO&#xff09;于1977年发布的…...

Apache Flink概述

Flink 是构建在数据流之上的一款有状态的流计算框架&#xff0c;通常被人们称为第三代大数据分析方案 第一代大数据处理方案&#xff1a;基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 &#xff0c;两套独立的计算引擎&#xff0c;难度大&#xff08;2014年9月&#x…...

django使用mysql数据库

Django开 发操作数据库比使用pymysql操作更简单&#xff0c;内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图&#xff0c;pymysql就是mysql的驱动&#xff0c;代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动&a…...

MongoDB文档--基本概念

阿丹&#xff1a; 不断拓展自己的技术栈&#xff0c;不断学习新技术。 基本概念 MongoDB中文手册|官方文档中文版 - MongoDB-CN-Manual mongdb是文档数据库 MongoDB中的记录是一个文档&#xff0c;它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包…...

【TypeScript】TS入门及基础学习(一)

【TypeScript】TS入门及基础学习&#xff08;一&#xff09; 【TypeScript】TS入门及基础学习&#xff08;一&#xff09;一、前言二、基本概念1.强类型语言和弱类型语言2.动态语言和静态语言 三、TypeScript与JavaScript的区别四、环境搭建及演练准备4.1 安装到本地4.2 在线运…...

Dockerfile构建LNMP镜像(yum方式)

目录 Dockerfile构建LNMP镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 5、浏览器访问测试&#xff1a; Dockerfile构建LNMP镜像 1、建立工作目录 [roothuyang1 ~]# mkdir lnmp/ [roothuyang1 ~]# cd lnmp/ 2、编写Dockerfile文件 [roothuyang1 …...

Flink Windows(窗口)详解

Windows&#xff08;窗口&#xff09; Windows是流计算的核心。Windows将流分成有限大小的“buckets”&#xff0c;我们可以在其上应用聚合计算&#xff08;ProcessWindowFunction&#xff0c;ReduceFunction&#xff0c;AggregateFunction或FoldFunction&#xff09;等。在Fl…...

AssetBundle学习

官方文档&#xff1a;AssetBundle 工作流程 - Unity 手册 (unity3d.com) 之前写的博客&#xff1a;AssetBundle学习_zaizai1007的博客-CSDN博客 使用流程图&#xff1a; 1&#xff0c;指定资源的AssetBundle属性 &#xff08;xxxa/xxx&#xff09;这里xxxa会生成目录&…...

CompletableFuture原理与实践

文章目录 1 为何需要并行加载2 并行加载的实现方式2.1 同步模型2.2 NIO异步模型2.3 为什么会选择CompletableFuture&#xff1f; 3 CompletableFuture使用与原理3.1 CompletableFuture的背景和定义3.1.1 CompletableFuture解决的问题3.1.2 CompletableFuture的定义 3.2 Complet…...

微软这个开源语音 AI 火了:GitHub 星标逼近 4 万,为什么大家都在讨论它?

聊天机器人这边还没卷明白&#xff0c;微软又把语音 AI 推上了热榜。这次火起来的项目&#xff0c;叫 VibeVoice。 它不是一个单点模型&#xff0c;而是一整套开源语音 AI 方案。GitHub 仓库当前星标已经逼近 4 万&#xff0c;确实是最近开源圈里最受关注的项目之一。更重要的是…...

nginx常见问题记录

之前学习了nginx的基本配置后 个人项目运用过 正好最近公司的项目需要将手上的工作独立拆分出来 于是就需要我这独立配置一套新的nginx 在过程中也发现了不少之前没注意到的问题 &#xff08;所以说实践还是检验问题的唯一方法啊 汗(lll&#xffe2;ω&#xffe2;) &#xff…...

gh_mirrors/prompts29/prompts高级技巧:10个方法优化你的AI引导词策略

gh_mirrors/prompts29/prompts高级技巧&#xff1a;10个方法优化你的AI引导词策略 【免费下载链接】Pensieve tore your decisions and principles. Claude reads them to make better choices. 项目地址: https://gitcode.com/gh_mirrors/prompts29/Pensieve Pensieve&…...

golang如何实现滑动窗口计数器_golang滑动窗口计数器实现思路

滑动窗口计数器不能只用map定时清理&#xff0c;因会漏统计非整点对齐的请求&#xff1b;必须保留带时间戳事件或时间分片&#xff0c;常用环形数组实现&#xff0c;按需shift比ticker更精准高效。滑动窗口计数器为什么不能只用 map 定时清理直接用 map[string]int 存请求次数…...

别再只盯着激光雷达了!聊聊低成本单目摄像头测距在机器人/小车项目里的那些事儿

低成本单目摄像头测距&#xff1a;机器人项目中的实战技巧与避坑指南 在机器人、智能小车和无人机项目中&#xff0c;距离感知一直是核心挑战之一。当大家一窝蜂地追求激光雷达方案时&#xff0c;却忽略了手边最经济实惠的传感器——普通摄像头。单目视觉测距技术&#xff0c;这…...

从DeepPS到工业实践:剖析基于DCNN的停车位检测算法演进与挑战

1. 停车位检测技术的现实挑战与需求 想象一下&#xff0c;你正开车进入一个陌生的地下停车场&#xff0c;昏暗的灯光下&#xff0c;地面反光严重&#xff0c;部分车位线已经模糊不清。这时候如果依赖传统计算机视觉算法&#xff0c;很可能连最基本的车位线都识别不出来。这正是…...

怎么在MongoDB中实现动态轮换证书(Certificate Rotation)而不停机

证书轮换时连接中断的根本原因是客户端不主动检查证书变更&#xff0c;仅初始握手验证&#xff0c;复用旧连接导致新旧证书混用&#xff1b;必须通过关闭连接池并重建实现热更新。证书轮换时连接中断的根本原因MongoDB 客户端&#xff08;比如 pymongo 或 mongodb-driver-node&…...

从UML到LLM,AI设计模式生成全链路拆解,深度解析SITS2026现场验证的8项关键指标

第一章&#xff1a;SITS2026现场验证的AI设计模式生成全景图 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026现场验证环境中&#xff0c;AI设计模式生成已突破传统模板驱动范式&#xff0c;演进为融合实时反馈、多模态约束解析与可验证性注入的动态生成系统。该全景…...

IAR开发环境从零到一:新手入门与高效配置指南

1. IAR开发环境初探&#xff1a;从安装到第一个工程 第一次打开IAR Embedded Workbench时&#xff0c;很多新手会被密密麻麻的菜单和选项吓到。别担心&#xff0c;这就像第一次学骑自行车&#xff0c;看起来复杂&#xff0c;实际上只要掌握几个关键步骤就能跑起来。IAR作为嵌入…...

CloudCompare实战:点云二次曲面拟合精度分析与优化策略

1. 二次曲面拟合基础与CloudCompare实现 点云数据处理中&#xff0c;曲面拟合是个绕不开的话题。我第一次接触CloudCompare的二次曲面拟合功能时&#xff0c;就被它的简洁界面吸引&#xff0c;但实际用起来发现没那么简单。二次曲面拟合的本质&#xff0c;是用数学方程来描述点…...