File2OssService.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.example.fms.service;
  2. import com.example.fms.common.model.dto.DownloadSysFileDTO;
  3. import com.example.fms.common.model.dto.SystemFileDTO;
  4. import com.example.fms.common.model.vo.ConfigSettingVO;
  5. import com.example.fms.common.utils.FileUtils;
  6. import com.example.fms.exception.XiaoShiException;
  7. import lombok.RequiredArgsConstructor;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.web.multipart.MultipartFile;
  11. import java.io.IOException;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. /**
  15. * OSS文件管理接口
  16. *
  17. * @Author xiexiang
  18. * @Date 2024/4/1
  19. */
  20. @Slf4j
  21. @Service
  22. @RequiredArgsConstructor
  23. public class File2OssService implements IFileFactory {
  24. private final FileUtils fileUtils;
  25. private final OssService ossService;
  26. /**
  27. * 上传文件
  28. *
  29. * @param files
  30. * @param configSettingVO 根据传入的id,选择的配置类,选择的上传路径以及上传方法
  31. * @return
  32. * @throws IOException
  33. */
  34. public List<SystemFileDTO> uploadFile(List<MultipartFile> files, ConfigSettingVO configSettingVO) throws IOException {
  35. List<SystemFileDTO> systemFileDTOS = new ArrayList<>();
  36. for (MultipartFile file : files) {
  37. try {
  38. String directoryName = fileUtils.getDirectoryName();
  39. SystemFileDTO systemFileDTO = OssService.upload(configSettingVO.getFilePath() + directoryName, file, configSettingVO);
  40. //服务器存储目录位置(1.本地project/pas/prod/file 2.本地project/rms/prod/file 3.生产project/pas/prod/file 4.生产project/rms/prod/file)
  41. systemFileDTO.setPType(configSettingVO.getId());
  42. //FSS
  43. systemFileDTO.setSourceId(configSettingVO.getSourceId());
  44. systemFileDTO.setOriginalName(file.getOriginalFilename());
  45. systemFileDTO.setFilePath(configSettingVO.getFilePath() + directoryName + "/" + systemFileDTO.getFileName());
  46. systemFileDTOS.add(systemFileDTO);
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. return systemFileDTOS;
  52. }
  53. @Override
  54. public SystemFileDTO replaceFile(String fileGuid, MultipartFile file, ConfigSettingVO configSettingVO) {
  55. try {
  56. String directoryName = fileUtils.getDirectoryName();
  57. SystemFileDTO systemFileDTO = ossService.upload(configSettingVO.getFilePath() + directoryName, file, configSettingVO);
  58. //服务器存储目录位置(1.本地project/pas/prod/file 2.本地project/rms/prod/file 3.生产project/pas/prod/file 4.生产project/rms/prod/file)
  59. systemFileDTO.setPType(configSettingVO.getId());
  60. //FSS
  61. systemFileDTO.setSourceId(configSettingVO.getSourceId());
  62. systemFileDTO.setOriginalName(file.getOriginalFilename());
  63. systemFileDTO.setGUID(fileGuid);
  64. systemFileDTO.setFilePath(configSettingVO.getFilePath() + directoryName + "/" + systemFileDTO.getFileName());
  65. return systemFileDTO;
  66. } catch (Exception e) {
  67. }
  68. return null;
  69. }
  70. /**
  71. * 下载文件
  72. *
  73. * @param downloadSysFileDTO
  74. * @param configSettingVO
  75. * @return
  76. */
  77. public byte[] downloadFile(DownloadSysFileDTO downloadSysFileDTO, ConfigSettingVO configSettingVO) {
  78. String filePath = downloadSysFileDTO.getFilePath();
  79. try {
  80. byte[] fileData = OssService.download(filePath, configSettingVO);
  81. return fileData;
  82. } catch (Exception e) {
  83. throw new XiaoShiException("下载错误");
  84. }
  85. }
  86. /**
  87. * 删除文件
  88. *
  89. * @param filePath
  90. * @param configSettingVO
  91. */
  92. public void deleteFile(String filePath, ConfigSettingVO configSettingVO) {
  93. try {
  94. OssService.delete(filePath, configSettingVO);
  95. } catch (Exception e) {
  96. throw new XiaoShiException("删除错误");
  97. }
  98. }
  99. }