网站Logo 苏叶的belog

Spring文件上传.md

wdadwa
3
2026-03-30

一,文件上传简介

文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程

文件上传前端页面三要素:

2953321-20240709223106019-313740971.png

  1. 必须为 POST 请求

  2. 传输数据类型必须为multipart/form-data

    默认传输数据的类型只会将文件的文件名传输过去。

    设置完传multipart/form-data之后,表单提交数据的方式会变成多个部分,每一个表单项就会分一段。

    分隔符就是Content-Type里面显示:
    2953321-20240709223105947-310328515.png
    2953321-20240709223105947-540209608.png

  3. input 的 type 为 file


在服务端我们使用MultipartFile类型来接受上传的文件:

2953321-20240709223106130-1616757295.png

上传到服务端的文件,会根据分段,将数据保存到不同文件中。如上图,一个文件存 username,一个存 age,一个存 file

二,本地存储

将文件保存到指定路径,调用MultipartFile里面的方法即可。

2953321-20240709223106122-1082312213.png

在 SpringBoot 中,文件上传默认单个文件允许最大大小为1M。如果需要更大,通过修改配置文件

spring:
  servlet:
    multipart:
      #配置单个文件最大上传大小
      max-file-size: 10MB
      #配置单个请求最大上传大小(一次请求可以上传多个文件)
      max-request-size: 100MB

MultipartFile 其他方法:

  • String getOriginalFilename();//获取原始文件名
  • void transferTo(File dest); //将接收的文件转存到磁盘文件中
  • long getSize(); //获取文件的大小,单位: 字节
  • bytel] getBytes(); //获取文件内容的字节数组
  • InputStream getlnputStream0);//获取接收到的文件内容的输入流

三,云服务存储

** 拿阿里云对象存储服务为例:** 阿里云对象存储 0SS (0bject Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

第三方服务使用思路:

  • 准备工作==>参照官方SDK编写入门程序==>集成使用

SDK:Software Development Kit 的缩写,软件开发工具包,包括辅助软件开发的依赖 (jar 包)、代码示例等,都可以叫做 SDK.

阿里云 OSS 使用步骤:

2953321-20240709223106032-1902211755.png

Bucket:存储空间是用户用于存储对象 (Object,就是文件) 的容器,所有的对象都必须隶属于某个存储空间。

具体的,阿里云有手册,直接查就好了。

也可以使用 MinIo 框架自己搭建一个分布式 OSS

动物装饰