三,文件上传

97 阅读2分钟

一,文件上传简介

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

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

image-20231102215015769
  1. 必须为POST请求

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

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

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

    分隔符就是Content-Type里面显示:

    image-20231102220054416

    image-20231102220233879

  3. input的type为file


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

image-20231102220526040

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

二,本地存储

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

image-20231102221511278

在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使用步骤:

image-20231102222657962

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

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

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