Java SpringBoot实现文件上传功能的示例代码
作者:m0_54850467 时间:2022-05-23 02:54:46
测试代码
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>2.6.2</version>
</parent>
<packaging>jar</packaging>
<groupId>com.kaven</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot</name>
<description>springboot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties(配置文件):
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB
max-file-size:指定允许上传文件的最大大小,默认值为1MB。
max-request-size:指定允许multipart/form-data请求的最大大小,默认值为10MB。
上传接口:
package com.kaven.springboot.controller;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.http.HttpStatus;
import org.springframework.util.StringUtils;
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 javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@RestController
public class FilesController {
@PostMapping(value="/upload", headers="content-type=multipart/form-data")
public String upload(@RequestParam(value = "file") MultipartFile file,
HttpServletResponse response) throws IOException, InterruptedException {
System.out.println("有文件上传请求进来了");
FileOutputStream fileOutputStream = null;
InputStream inputStream = null;
try {
// 上传文件是否存在
if (file != null && !file.isEmpty()) {
// 如果上传文件存在,获取它的原始文件名
String fileName = file.getOriginalFilename();
if (StringUtils.hasText(fileName)) {
// 将上传文件存储在服务器的E盘下(Windows)
java.io.File outFile = new java.io.File("E:\" + fileName);
// 基于outFile创建文件输出流实例
fileOutputStream = new FileOutputStream(outFile);
// 获取上传文件的输入流
inputStream = file.getInputStream();
/*
* 将字节从输入流复制到输出流
* 此方法在内部会缓冲输入,因此无需使用BufferedInputStream
* 大型流(超过2GB)将在复制完成后返回字节复制值-1 ,因为无法将正确的字节数作为int返回
* 对于大型流,需要使用copyLarge(InputStream, OutputStream)方法
* 参数:
* input – 要读取的InputStream
* output - 要写入的OutputStream
* */
IOUtils.copy(inputStream, fileOutputStream);
}
}
else {
// 文件不存在
response.setStatus(HttpStatus.BAD_REQUEST.value());
return "文件不存在";
}
} catch (Exception e) {
// 文件上传错误
e.printStackTrace();
response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
return "文件上传错误";
} finally {
if (fileOutputStream != null) {
fileOutputStream.flush();
fileOutputStream.close();
}
}
// 文件上传成功
response.setStatus(HttpStatus.OK.value());
return "文件上传成功";
}
}
启动类:
package com.kaven.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(SpringbootApplication.class);
application.run(args);
}
}
使用Postman
进行测试。
上传的文件是完整的,可以播放(视频文件)。
上传文件不存在。
控制台的输出。
来源:https://blog.csdn.net/m0_54850467/article/details/123427555
标签:Java,SpringBoot,文件,上传
0
投稿
猜你喜欢
java web手写实现分页功能
2022-02-04 02:23:15
winform获取当前名称实例汇总
2023-03-22 17:03:18
c# 垃圾回收(GC)优化
2023-07-29 23:00:58
C# 使用HttpClient模拟请求的案例
2023-10-16 18:20:14
自定义BufferedReader的实例
2021-06-10 08:13:39
SpringBoot 整合 Elasticsearch 实现海量级数据搜索功能
2021-09-23 02:38:51
Android Parcleable接口的调用源码层分析
2023-07-09 20:43:48
浅谈Spring框架中@Autowired和@Resource的区别
2023-11-26 11:31:21
Java Grpc实例创建负载均衡详解
2022-03-07 17:50:15
Spring Boot中的那些条件判断的实现方法
2023-04-26 15:02:07
Android 接收微信、QQ其他应用打开第三方分享功能
2022-06-12 18:11:58
Maven搭建springboot项目的方法步骤
2022-08-08 09:50:09
简单分析Java的求值策略原理
2022-03-22 19:14:00
Android实现webview实例代码
2022-05-28 13:32:32
Android自定义SwipeLayout仿QQ侧滑条目
2023-12-06 14:24:25
C#的WebBrowser操作frame实例解析
2022-03-02 03:46:43
Android通过自定义View实现随机验证码
2022-10-24 07:16:19
Android使用WindowManager构造悬浮view
2022-08-03 00:43:13
java实现在线预览--poi实现word、excel、ppt转html的方法
2022-09-29 20:29:41
Android通过json向MySQL中读写数据的方法详解【写入篇】
2022-07-20 19:12:39