上传文件
一、Controller层
package com.sg.sgfinishedproductqualitymanage.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sg.sgfinishedproductqualitymanage.common.ReturnData;
import com.sg.sgfinishedproductqualitymanage.pojo.TbFile;
import com.sg.sgfinishedproductqualitymanage.service.TbFileService;
import com.sg.sgfinishedproductqualitymanage.utils.UUIDUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "文件上传相关接口")
@RestController
@RequestMapping({"/file"})
public class FileController {
@Value("${files.upload.path}")
private String fileUploadPath;
@Autowired
private TbFileService fileService;
@ApiOperation("文件上传")
@PostMapping("/upload")
@Transactional
public ReturnData upload(@RequestBody MultipartFile file, HttpServletRequest request) throws IOException {
System.out.println(file);
//获取原始文件名称
String originalFilename = file.getOriginalFilename();
//通过hutool工具包获取文件类型
String type = FileUtil.extName(originalFilename);
//获取文件大小
long size = file.getSize();
//先存到磁盘
File uploadParentFile = new File(fileUploadPath);
//判断文件目录是否存在,不存在则新建
if (!uploadParentFile.exists()) {
if (!uploadParentFile.getParentFile().exists()){
uploadParentFile.getParentFile().mkdirs();
}
uploadParentFile.mkdir();
}
//配置文件的唯一标识位
String uuid = IdUtil.fastSimpleUUID();
//文件名设置
String fileUuid = uuid + StrUtil.DOT + type;
File uploadFile = new File(fileUploadPath + fileUuid);
//当文件存在的时候再获取文件MD5
String url;
//把获取到的文件存到磁盘目录中去
file.transferTo(uploadFile);
//获取文件MD5
String md5 = SecureUtil.md5(uploadFile);
TbFile fileMd5 = getFileMd5(md5);
if (fileMd5!=null){
//如果不为空
url = fileMd5.getUrl();
uploadFile.delete();
}else {
//String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
url = "http://h5.shasteel.cn/h5/test/file/" + fileUuid;
}
//存储到