文章目录
- 这是springboot案例的,文件上传功能的拆分,本篇将带大家彻底了解文件上传功能,先从本地存储再到云存储,全网最详细版本,保证可以学会,可以了解文件上传功能的开发
- 文件上传功能剖析
- 进行书写一个小的文件上传
- 文件上传的文件三要素
- 首先表单提交的方式要是 post方式,
- 第二个enctype="multipart/form-data 这个要求
- 第三个是在提交文件的type要选择 type="file"的方式
- 云存储 ,进行云存储保存改造
这是springboot案例的,文件上传功能的拆分,本篇将带大家彻底了解文件上传功能,先从本地存储再到云存储,全网最详细版本,保证可以学会,可以了解文件上传功能的开发
文件上传功能剖析
首先分析业务场景,文件上传功能场景,一般是修改员工信息,或者新增用户要上传的文件信息,
这里文件上传
这是场景分析
进行书写一个小的文件上传
先写一个html文件
在springboot项目中,在resource中,书写一个html页面
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head><meta charset="UTF-8"><title>文件上传</title>
</head>
<body>
<!--enctype="multipart/form-data"-->
<form method="post" enctype="multipart/form-data" action="/upload">姓名:<input type="text" name="username"><br>年龄:<input type="text" name="age"><br>文件:<input type="file" name="image"><br><input type="submit" value="提 交"></form></body>
</html>
这是一个表单页面代码,下面要介绍一下文件上传的前端三要素
文件上传的文件三要素
首先表单提交的方式要是 post方式,
第二个enctype="multipart/form-data 这个要求
第三个是在提交文件的type要选择 type="file"的方式
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head><meta charset="UTF-8"><title>文件上传</title>
</head>
<body>
<!--enctype="multipart/form-data"-->
<form method="post" enctype="multipart/form-data" action="/upload">姓名:<input type="text" name="username"><br>年龄:<input type="text" name="age"><br>文件:<input type="file" name="image"><br><input type="submit" value="提 交"></form></body>
</html>
这个是前端文件的全部代码,可以直接使用
前端
那么书写完前端后,就可以书写后端
package com.healer.controller;import com.healer.common.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.UUID;/*** @author healer* @Description UploadController* @data 2024-06-01 9:35*/@RestController
@Slf4j
public class UploadController {@PostMapping("/upload")public Result uploadFile(String username, Integer age, MultipartFile image) throws IOException {log.info("文件上传.....{} {}", username, age);// 首先获取源文件String originalFilename = image.getOriginalFilename();// 使用UUID生成新文件名String uuid = UUID.randomUUID().toString();// 截取String substring = originalFilename.substring(originalFilename.lastIndexOf("."));String newFile = uuid + substring;image.transferTo(new File("D:\\images\\" + newFile));return Result.success();}
}
这个是后端的代码
在上传文件的时候会需要进行,文件名防止重复
所以这里使用UUID去生成前面的文件名
然后再获取文件名的拓展名
然后使用uuid生成的id 与拓展名进行拼接
那么就获取新的文件名
上传文件
然后就文件上传成功了
本地存储完成
没有什么业务逻辑
直接在controller层接收数据 然后保存就可以了