需要引入依赖
<!-- 导入 导出 使用hutool工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
上传(本地文件)
如果不考虑上传到数据库,只是把文件上传到指定路径下
@Value("${files.upload.path}")
private String fileUploadPath;
@PostMapping("/upload")
public String upload(@RequestParam MultipartFile file) throws IOException {
//获取文件名和后缀
String originalFilename = file.getOriginalFilename();
String type = FileUtil.extName(originalFilename);
//获取文件大小
long size = file.getSize();
//先保存到磁盘 引入yml文件配置的路径
File uploadFile = new File(fileUploadPath);
//判断文件目录是否存在 如果不存在,就创建一个文件夹
if(!uploadFile.exists()){
uploadFile.mkdirs();
}
//定义一个文件唯一标识码
String uuid = IdUtil.fastSimpleUUID();
//使用文件IO获取到文件
File uploadFiles = new File(fileUploadPath + uuid + StrUtil.DOT + type);
//把文件存储到磁盘目录 抛出IO异常
file.transferTo(uploadFiles);
return "上传成功";
}
上传(数据库里保存文件属性)
1.新建数据库.
用来保存上传的文件 没有使用md5加密。
2.如果是mybatisPlus,直接生成files的各层。
3.直接写controller层.会返回一个文件的路径。
@Value("${files.upload.path}")
private String fileUploadPath;
@Autowired
private FielsMapper fielsMapper;
@PostMapping("/uploadToDataBase")
public String upload(@RequestParam MultipartFile file) throws IOException {
//获取文件名和后缀
String originalFilename = file.getOriginalFilename();
String type = FileUtil.extName(originalFilename);
//获取文件大小
long size = file.getSize();
//先保存到磁盘 引入yml文件配置的路径
File uploadFile = new File(fileUploadPath);
//判断文件目录是否存在 如果不存在,就创建一个文件夹
if(!uploadFile.exists()){
uploadFile.mkdirs();
}
//定义一个文件唯一标识码
String uuid = IdUtil.fastSimpleUUID();
String fileUUId = uuid + StrUtil.DOT + type;
//使用文件IO获取到文件
File uploadFiles = new File(fileUploadPath + fileUUId);
//把文件存储到磁盘目录 抛出IO异常
file.transferTo(uploadFiles);
//保存到数据库
//获取文件的路径
String url = "http://localhost:8980/"+fileUUId;
//创还能数据库对象
Fiels fiels = new Fiels();
fiels.setName(originalFilename);
fiels.setSize(size/1024);
fiels.setType(type);
fiels.setUrl(url);
fielsMapper.insert(fiels);
return url;
}