java入门 springboot上传文件

一、 pom.xml

knife4j和springboot之间存在版本不兼容的问题,需要选对合适的版本

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sht</groupId><artifactId>test</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>test</name><url>http://maven.apache.org</url><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.6.RELEASE</version></parent><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- springboot 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!-- spring security --><!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 日志 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><!-- mybatis数据库支持 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 调试支持 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.8</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version></dependency><!-- jwt --><!-- <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.4.0</version> </dependency> --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency></dependencies>
</project>

二、 App.java

app.java

package com.sht.test;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App 
{public static void main( String[] args ){SpringApplication.run(App.class, args);}
}

三、 Controller

HelloController.java

package com.sht.test.controller;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;@RestController
@Api(value = "文件上传",tags = "文件上传")
public class HelloController {//文件上传@PostMapping("/file/upload")@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "文件名"),@ApiImplicitParam(name = "file", value = "文件内容")})public String upload(@RequestParam(value = "name") String name,@RequestParam(value = "file") MultipartFile file) {try {File diskFile = new File("D:\\myfile\\project\\ttt\\oxygen\\test\\data\\" + name);if (!diskFile.exists()) {diskFile.createNewFile();}InputStream is = file.getInputStream();OutputStream os = new FileOutputStream(diskFile);IOUtils.copy(is, os);} catch (Exception e) {e.printStackTrace();}return "success";}
}

四、 Knife4j配置

Knife4jConfig.java

package com.sht.test.config;import java.util.ArrayList;
import java.util.List;import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;@SpringBootConfiguration
@EnableSwagger2WebMvc
public class Knife4jConfig {@Beanpublic Docket adminApiConfig(){List<Parameter> pars = new ArrayList<>();ParameterBuilder tokenPar = new ParameterBuilder();tokenPar.name("token").description("用户token").defaultValue("").modelRef(new ModelRef("string")).parameterType("header").required(false).build();pars.add(tokenPar.build());//添加head参数endDocket adminApi = new Docket(DocumentationType.SWAGGER_2).groupName("adminApi").apiInfo(adminApiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.sht.test")).build().globalOperationParameters(pars);return adminApi;}private ApiInfo adminApiInfo(){return new ApiInfoBuilder().title("测试-API文档").description("测试").version("1.0").contact(new Contact("张三", "", "xxxxxxx")).build();}
}

五、 测试截图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杂谈|RestFul和http的区别

前言 今天和我一组的小伙伴&#xff0c;在对接一个接口时&#xff0c;客户将DELETED请求设置了body参数&#xff0c;导致一个功能反复搞了半天&#xff0c;今天就来说下这两者的区别 1.HTTP概述 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是一种用于从WWW&…

操作系统5_虚拟存储器

操作系统5_虚拟存储器 文章目录 操作系统5_虚拟存储器1. 虚拟存储器1.1 虚拟存储器的引入1.2 虚拟存储器的概念1.3 虚拟存储器的特征1.4 虚拟存储器的实现方法2. 请求分页存储管理2.1 请求分页中的硬件支持2.2 内存分配策略和分配算法2.3 调页策略2.4 页面置换算法2.4.1 最佳置…

docker部署相关命令

docker部署相关操作 查看docker基本信息 docker info查看docker中所有镜像 docker images查看docker中所有容器 docker ps # 已启动的容器 docker ps -a # 所有容器 docker ps -a -s # 查看所有容器和大小从镜像创建容器并运行 docker run -it 镜像名 # 简单命令 dock…

c++——模板初始识

1.函数模板 我们经常用到Swap函数交换两个值。由于需要交换的数据的类型不同&#xff0c;我们就需要写不同参数类型的同名函数&#xff0c;也就是函数重载&#xff1a; 然而这三个函数的逻辑是一样的&#xff0c;写这么多有些多此一举&#xff0c;通过函数模版可以写一个通用…

LabVIEW机器视觉在自动化生产线中的应用是什么?

LabVIEW机器视觉技术在自动化生产线中有广泛的应用&#xff0c;主要包括以下几个方面&#xff1a; 质量控制与检测&#xff1a; 缺陷检测&#xff1a;使用机器视觉系统实时检测产品表面的缺陷&#xff0c;如划痕、裂纹、污渍等&#xff0c;确保产品质量。尺寸测量&#xff1a;通…

【量算分析工具-水平面积】GeoServer改造Springboot番外系列五

【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…

GoldenEye-v1(vulnhub)靶机练习实践报告

GoldenEye-v1****靶机练习实践报告 一、安装靶机 靶机是.ova文件&#xff0c;需要用VirtualBox打开&#xff0c;但我习惯于使用VMWare,因此修改靶机文件&#xff0c;使其适用于VMWare打开。 解压ova文件&#xff0c;得到.ovf文件和.vmdk文件。 用记事本打开.ovf文件并修改“…

Element Plus 快速入门

Element Plus 快速入门 Element Plus 是一个基于 Vue 3.0 的桌面端组件库&#xff0c;它包含了丰富的组件和实用的工具&#xff0c;可以帮助开发者快速构建 Vue 3.0 应用。 安装 首先&#xff0c;我们需要在项目中安装 Element Plus。在终端中运行以下命令&#xff1a; npm…

gmssl vs2010编译

1、虚拟机win10 x64&#xff0c;离线安装vs2010和2010sp1补丁&#xff1b; 2、安装ActivePerl_v5.28.1.0000和nasm-2.16.03-installer-x64均是默认完整安装&#xff1b; nasm官网下载&#xff1a; Index of /pub/nasm/releasebuilds/2.16.03/win64https://www.nasm.us/pub/nas…

Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装

Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装 目录 Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装 一、简单介绍 二、获取设备的序列号 (Serial Number) 实现原理 1、Android 2、 Unity 三、注意…

九型人格介绍

协调型人格 作为“好好先生”的何炅是典型的协调型人格者&#xff0c;他总是将大家的利益放在第一位&#xff0c;很少顾及自己的感受;当他周围的人产生冲突时&#xff0c;他总是力图找到一个有利于双方的解决方案;本着息事宁人的态度&#xff0c;他对利益的追逐和向往很低&…

gem5模拟器入门(一)——环境配置

什么是gem5&#xff1f; gem5是一个模块化的离散事件驱动的计算机系统模拟器平台。这意味着&#xff1a; GEM5 的组件可以轻松重新排列、参数化、扩展或更换&#xff0c;以满足您的需求。它将时间的流逝模拟为一系列离散事件。它的预期用途是以各种方式模拟一个或多个计算机系…

掌握并发控制的“急刹车”艺术!

当一个线程运行时&#xff0c;另外一个线程可以直接通过interrupt方法对其设置中断标志位。 判断线程是否中断的2个方法&#xff1a; // 判断目标线程是否被中断&#xff0c;不会清除中断标记。 Thread.currentThread().isInterrupted() // 判断目标线程是否被中断&#xff0c;…

【职业教育培训机构小程序】教培机构“招生+教学”有效解决方案

教培机构“招生教学”有效解决方案在数字化转型的浪潮中&#xff0c;职业教育培训机构面临着提升教学效率、拓宽招生渠道、增强学员互动等多重挑战。小程序作为一种新兴的移动应用平台&#xff0c;为解决这些痛点提供了有效途径。 一、职业教育培训机构小程序的核心功能 &…

Laravel 图片添加水印

和这个配合使用 Laravel ThinkPhP 海报生成_laravel 制作海报-CSDN博客 代码 //水印 $x_length $imageInfo[0]; $y_length $imageInfo[1];$color imagecolorallocatealpha($posterImage, 255, 255, 255, 70); // 增加透明度参数alpha$font_size 40; //字体大小 $angle …

HTML静态网页成品作业(HTML+CSS)——家乡沅陵介绍网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

条款9:利用destructors避免泄露资源

对指针说拜拜。承认吧&#xff0c;你从未真正喜欢过它&#xff0c;对不&#xff1f; 好&#xff0c;你不需要对所有指针说拜拜&#xff0c;但是你真的得对那些用来操控局部性资源(local resources&#xff09;的指针说莎唷娜拉了。 举个例子&#xff0c;你正在为“小动物收养…

Flutter 中的 CircularProgressIndicator 小部件:全面指南

Flutter 中的 CircularProgressIndicator 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;加载指示器是提供用户反馈的重要组成部分&#xff0c;特别是在需要等待数据加载的场景中。CircularProgressIndicator 是 Flutter 提供的一个表现圆形加载动画的小部件。…

Python进阶:探索Python标准库和第三方库

在前两篇文章中,我们介绍了Python的基本语法和面向对象编程。在这篇文章中,我们将深入探索Python的标准库以及一些常用的第三方库。Python的强大之处不仅在于其简洁的语法,还在于丰富的库生态系统。通过使用这些库,你可以更高效地完成各种任务,从文件操作到数据分析、网络…

godot4.2 + GDextension c++在 vs code 中断点调试配置

游戏开发中如果做不到自己编写的代码做断点调试&#xff0c;无不是瞎子摸象&#xff0c;特别是C这么底层的语言。这2天开始在VS studio中折腾&#xff0c;一直折腾不出结果&#xff0c;几次想要放弃GODOT。最终今天在VS code中搞定了这断点调试C代码。 在上一篇文章我已经做好了…