Spring Boot文件上传和下载
2022/4/21 6:19:55
本文主要是介绍Spring Boot文件上传和下载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- Spring Boot 文件上传
1.1 创建springboot项目,引入web和thymeleaf启动器坐标
|
1.2 编写文件上传的视图层thymeleaf页面。index.html
<!DOCTYPE html> |
1.3 编写访问thymeleaf页面的控制器方法
由于template目录是安全目录,该目录下所有的thymeleaf页面都不能直接访问,必须通过控制器才能访问。
@Controller |
1.4 编写实现控制文件上传的控制器方法
/** |
1.5文件上传配置,全局配置文件application.properties
默认spring boot 文件上传单个文件的大小为1MB
默认spring boot 文件上传总文件的大小为10MB
#配置单个文件的最大大小 |
- Spring Boot 文件下载
2.1 页面部分
<a th:href="@{/downLoad(filename='417f0b50-8dec-4b77-8a9c-73ff4a2b4cf9.jpg')}" >下载417f0b50-8dec-4b77-8a9c-73ff4a2b4cf9.jpg</a> |
2.2 控制器实现文件下载
/** |
- Spring Boot 实现跨服务器文件上传
3.1 结构图
|
3.2 创建文件服务器,maven的web项目,存放上传的文件服务器
项目名:fileupload_server
|
在项目的webapp目录下,创建一个files的目录,存放上传的文件
注意:往files中先默认放一张图片,否则files文件编译后不会保留
|
项目发布到tomcat服务器上,并启动。注意修改端口和jmx
|
3.3 创建实现文件上传的服务器,实现跨服务器文件上传的代码
3.3.1 打开pom.xml文件,引入跨服务器的坐标
<!--跨服务器文件上传,引入jersey的相关坐标--> |
3.3.2 页面核心代码
<form th:action="@{/fileUpload2}" method="post" enctype="multipart/form-data"> |
3.3.3 application.properties配置文件
#上传的服务器的目标地址 |
3.3.4 控制器核心代码
@Value("${server.file.path}") |
3.3.4 测试,发现出现报错
|
原因:
只要我们关联了服务器地址之后就可以直接通过put方法把文件上传上去,这无疑是非常危险的行为。因为在上传过程中并没有进行用户校验,那么如果被人知道了服务器保存图片的路径,甚至不需要知道准确路径,只要知道服务器ip地址就够了,那么他就可以通过put方法无限量的进行服务器上传。 如果开启了put方法,那么就可以任意写写入文件到服务器。但是如果禁用了put方法,那么又有导致一些需要put方法的业务无法使用. 修改tomcat的配置。修改在tomcat的/conf目录下的web.xml。找到下面这段把readonly设置成true。这样就无法通过put往服务器中写入文件了. |
解决:修改tomcat的web.xml文件设置为允许读写
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <!--允许读写--> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> |
这篇关于Spring Boot文件上传和下载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略