SpringBoot实现文件上传的多种方式
  9m65el8SCpbP 2023年11月19日 32 0

我们平时在项目开发过程中,会遇到许多的文件上传与下载的需求,今天我们就来梳理一下文件上传的代码实现,基于SpringBoot 快速搭建服务,集成文件上传功能,包括传统的文件上传方式,也拓展OSS对象存储方式。项目类型是Maven项目

一、引入web依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot实现文件上传的多种方式_上传文件

 

二、application.yml配置

在application.yml设置文件上传大小,以及文件上传路径和显示路径。maxFileSize 是单个文件大小,maxRequestSize是设置总上传的数据大小,文件配置大小的规则就是根据你的需求来设置。比如,如果只是上传图片,不管是单图上传还是多图上传,几十兆基本都能满足要求,如果是上传视频,则文件大小基本都是上百兆。

 

SpringBoot实现文件上传的多种方式_上传文件_02

 

这里有一个需要注意的就是application.yml里面的配置需要根据SpringBoot的版本来定,上面配置的是当前比较常用的版本,基于SpringBoot 2.x,但如果是SpringBoot 1.x,比如1.5版本,可以参考以下的配置(区别在于一个是http,一个是servlet

 

SpringBoot实现文件上传的多种方式_文件上传_03

 

除了在application.yml 中配置变量,也可以直接在Java代码里面配置:

/** * @Description 上传文件配置 * @author 编程侠 * @param * @param MultipartConfigElement */ public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); //文件最大30M,DataUnit提供五种类型B,KB,MB,GB,TB factory.setMaxFileSize(DataSize.of(30, DataUnit.MEGABYTES)); /// 设置总上传数据总大小200M factory.setMaxRequestSize(DataSize.of(300, DataUnit.MEGABYTES)); return factory.createMultipartConfig(); }

 

SpringBoot实现文件上传的多种方式_上传文件_04

 

三、文件上传

1、前端代码

最简单的就是使用经典的form表单和input上传。 设置form的aciton为后端请求,enctype=“multipart/form-data”,type=‘post’。

 

SpringBoot实现文件上传的多种方式_文件上传_05

 

说明:

(1)enctype 设置 multipart/form-data ,原因:指定传输数据为二进制类型,比如图片、mp3、文件。 这个一般文件上传时用。它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,type="file",浏览器会把整个表单以控件为单位分割。

(2)一般的上传只需要上传文件即可,但时候我们需要额外传参,以此来绑定文件跟用户的关联关系等,这个时候你就可以设置隐藏域,然后在后端使用request.getParameter 接收。

2、后端代码

Controller层代码实现,主要思路就是上传文件到指定的目录下,上传成功拼接显示地址(直接使用上传的地址无法在前端展示,是通过显示路径拼接后展示的),就可以在页面上进行展示了。

 

SpringBoot实现文件上传的多种方式_上传_06

 

如果是多文件上传,上传的方法做出适当的调整。因为接收的文件对象不再是一个了,改用数组接收。

 

SpringBoot实现文件上传的多种方式_上传_07

 

四、对象oss存储

除了传统的存储方式,现在对象oss存储也非常的流行,市场上常用的有阿里云、华为云,七牛云等,为什么需要使用到对象存储呢?oss存储是很多大型互联网公司针对图片、文件以及其他内容的存储使用的一种较为流行的方式,它以响应快,性能高,成本低、安全系数高深受业界大佬推崇。我们这里以阿里云OSS文件存储为例,其他家的接入方法类似。

阿里云OSS上传文件步骤:

1、开通阿里云OSS服务,创建bucket,创建AccessKey,拿到阿里云OSS相关的配置文件,拿到配置文件后,我们就可以放入到项目的配置文件application.yml中。

 

SpringBoot实现文件上传的多种方式_文件上传_08

 

2、引入项目需要的依赖,maven项目直接在pom.xml中添加依赖。

<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>

 

SpringBoot实现文件上传的多种方式_上传_09

 

3、创建一个读取配置的类,后续业务处理上传到OSS时,从该配置类获取参数。

SpringBoot实现文件上传的多种方式_上传_10

 


 

4、业务处理,一般完整的业务处理流程是:拿到生成文件的本地临时路径和文件数据。在本地临时目下生成文件。将本地文件上传到OSS,返回oss的全路径;删除本地临时目录、文件。

 

SpringBoot实现文件上传的多种方式_文件上传_11

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/09/28/springboot实现文件上传的多种方式/


 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
9m65el8SCpbP