How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

2024-02-24 15:36

本文主要是介绍How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

  • Project
    • pom.xml
    • OpenAPIConfig
    • FileUploadController
    • application.yaml

Project

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.qwfys.sample</groupId><artifactId>upload-sample</artifactId><version>0.0.1-SNAPSHOT</version><name>upload-sample</name><description>upload-sample</description><properties><java.version>17</java.version><swagger.starter.version>1.9.1.RELEASE</swagger.starter.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

OpenAPIConfig

package com.qwfys.sample.upload.base.config;import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.List;@Configuration
public class OpenAPIConfig {@Value("${app.openapi.dev-url}")private String devUrl;@Value("${app.openapi.prod-url}")private String prodUrl;@Beanpublic OpenAPI myOpenAPI() {Server devServer = new Server();devServer.setUrl(devUrl);devServer.setDescription("Server URL in Development environment");Server prodServer = new Server();prodServer.setUrl(prodUrl);prodServer.setDescription("Server URL in Production environment");Contact contact = new Contact();contact.setEmail("qwfys200@qq.com");contact.setName("qwfys200");contact.setUrl("https://www.qwfys.com");License mitLicense = new License().name("MIT License").url("https://choosealicense.com/licenses/mit/");Info info = new Info().title("Tutorial Management API").version("1.0").contact(contact).description("This API exposes endpoints to manage tutorials.").termsOfService("https://www.bezkoder.com/terms").license(mitLicense);return new OpenAPI().info(info).servers(List.of(devServer, prodServer));}
}

FileUploadController

package com.qwfys.sample.upload.controller;import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;@Tag(name = "Tutorial", description = "Tutorial management APIs")
@RestController
public class FileUploadController {private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);@RequestMapping(value = "/uploadMultiFiles", consumes = {"multipart/form-data"}, method = RequestMethod.POST)public String uploads(@RequestPart(required = true) MultipartFile[] files) {logger.info("File Upload:{}", files);return "sucessfull";}@RequestMapping(value = "/uploadMultiFile", consumes = {"multipart/form-data"}, method = RequestMethod.POST)public String uploads(@RequestPart(required = true) MultipartFile file) {logger.info("File Upload:{}", file);return "sucessfull";}
}

application.yaml

spring:servlet:multipart:max-file-size: 5MBmax-request-size: 5MBenabled: truelocation: ${java.io.tmpdir}app:openapi:dev-url: http://localhost:8080prod-url: https://api.qwfys.com/sample

在这里插入图片描述
在这里插入图片描述

参考文献

  • Manage upload/download of files using REST and Spring Boot
  • Spring Boot File upload example with Multipart File
  • Spring Boot + Swagger 3 example (with OpenAPI 3)
  • Swagger 3 annotations in Spring Boot
  • Setting up Swagger 3 With Spring Boot
  • Springfox Reference Documentation
  • How to run Swagger 3 on Spring Boot 3
  • Swagger UI 3 Setup with Spring Boot Application
  • Uploading Multiple Files with Springfox and Swagger-UI
  • Spring Boot Example for Uploading Swagger Files

这篇关于How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742547

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了