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

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();}
}

五、 测试截图

在这里插入图片描述

相关文章:

  • vue3 ts问题 找不到模块“@/views/home/index.vue”或其相应的类型声明。
  • STM32系列(HAL库)——F103C8T6通过HC-SR04超声波模块实现测距
  • Python进阶:探索Python标准库和第三方库
  • hive结合Hbase实现实时数据处理和批量分析
  • 2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线排班问题--matlab代码)
  • Spark SQL 中DataFrame DSL的使用
  • http和https分别是什么?区别是什么?
  • Redis:redis基础
  • 基于springboot实现大学生一体化服务平台系统项目【项目源码+论文说明】
  • 运维笔记.Docker镜像分层原理
  • 拓数派与浙江平数举行「政务数据服务产品合作开发」签约仪式
  • echarts配置记录,一些已经废弃的写法
  • StringBuilder的基本操作
  • 128天的创意之旅:从初心到成就,我的博客创作纪念日回顾
  • c++ (命名空间 字符串)
  • AWS实战 - 利用IAM对S3做访问控制
  • canvas绘制圆角头像
  • Cookie 在前端中的实践
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Docker入门(二) - Dockerfile
  • express.js的介绍及使用
  • Git初体验
  • Golang-长连接-状态推送
  • Java应用性能调优
  • js继承的实现方法
  • Making An Indicator With Pure CSS
  • nodejs实现webservice问题总结
  • STAR法则
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Vue.js源码(2):初探List Rendering
  • Zsh 开发指南(第十四篇 文件读写)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 使用Swoole加速Laravel(正式环境中)
  • 项目实战-Api的解决方案
  • 智能网联汽车信息安全
  • 7行Python代码的人脸识别
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 移动端高清、多屏适配方案
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #AngularJS#$sce.trustAsResourceUrl
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #在 README.md 中生成项目目录结构
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (vue)页面文件上传获取:action地址
  • (四)Controller接口控制器详解(三)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .chm格式文件如何阅读
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 托管代码与非托管代码
  • [145] 二叉树的后序遍历 js