java实现文件上传的三种方式 java文件上传原理

上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个 Spring Boot 上传文件的小案例 。

java实现文件上传的三种方式 java文件上传原理

文章插图
1、pom 包配置我们使用 Spring Boot 版本 2.1.0、jdk 1.8、tomcat 8.0 。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<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.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
引入了
spring-boot-starter-thymeleaf做页面模板引擎,写一些简单的上传示例 。
2、启动类设置@SpringBootApplication
public class FileUploadWebApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(FileUploadWebApplication.class, args);
}
@Bean
public TomcatServletWebServerFactory tomcatEmbedded() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
//-1 means unlimited
((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
}
});
return tomcat;
}
}
tomcatEmbedded 这段代码是为了解决,上传文件大于10M出现连接重置的问题 。此异常内容 GlobalException 也捕获不到 。

java实现文件上传的三种方式 java文件上传原理

文章插图
详细内容参考:Tomcat large file upload connection reset
3、编写前端页面上传页面
<!DOCTYPE html>
<html xmlns:th=”http://www.thymeleaf.org”>
<body>
<h1>Spring Boot file upload example</h1>
<form method=”POST” action=”/upload” enctype=”multipart/form-data”>
<input type=”file” name=”file” /><br/><br/>
<input type=”submit” value=https://www.jinnalai.com/fenxiang/”Submit” />
</form>
</body>
</html>
非常简单的一个 Post 请求,一个选择框选择文件,一个提交按钮,效果如下:

java实现文件上传的三种方式 java文件上传原理

文章插图
上传结果展示页面:
<!DOCTYPE html>
<html lang=”en” xmlns:th=”http://www.thymeleaf.org”>
<body>
<h1>Spring Boot – Upload Status</h1>
<div th:if=”${message}”>
<h2 th:text=”${message}”/>
</div>
</body>
</html>
效果图如下:

java实现文件上传的三种方式 java文件上传原理

文章插图
4、编写上传控制类访问 localhost 自动跳转到上传页面:
@GetMapping(“/”)
public String index() {
return “upload”;
}
上传业务处理

推荐阅读