FileServerImpl.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.fd.server.impl;
  2. import com.fd.constant.CommandMsg;
  3. import com.fd.constant.MsgCode;
  4. import com.fd.constant.TypeCode;
  5. import com.fd.entity.FileEntity;
  6. import com.fd.repository.FileRepository;
  7. import com.fd.server.CmdServer;
  8. import com.fd.util.ResponseResult;
  9. import com.fd.server.FileServer;
  10. import com.fd.util.FileUtils;
  11. import lombok.extern.log4j.Log4j2;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import javax.transaction.Transactional;
  16. import java.io.*;
  17. import java.util.Base64;
  18. import java.util.Date;
  19. import java.util.Optional;
  20. /**
  21. * Created by Owen on 2019/10/25 0025 16:06
  22. */
  23. @Log4j2
  24. @Service
  25. @Transactional
  26. public class FileServerImpl implements FileServer {
  27. @Autowired
  28. private FileRepository fileRepository;
  29. @Autowired
  30. private CmdServer cmdServer;
  31. public ResponseResult uploadBigFile(MultipartFile file, String savePath) {
  32. if (file.isEmpty() || file.getSize() <= 0) {
  33. log.info("文件为空");
  34. return new ResponseResult (50001, MsgCode.E50001);
  35. }
  36. // 文件名全名
  37. String fullFileName = file.getOriginalFilename();
  38. // 创建目录路径
  39. FileUtils.createDir(savePath);
  40. // 拼接唯一文件名
  41. String fileName = FileUtils.dateStr() + fullFileName;
  42. // 文件保存路径
  43. String filePath = savePath + fileName;
  44. // 写文件到本地
  45. try {
  46. FileUtils.bigFileWrite(file.getInputStream(), filePath);
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. log.info("filePath: {}", filePath);
  51. // 保存信息到db
  52. FileEntity entity = new FileEntity();
  53. entity.setFileName(fileName);
  54. entity.setFileUrl(filePath);
  55. // entity.setRecStatus("A");
  56. entity.setCreateTime(new Date());
  57. entity.setUpdateTime(new Date());
  58. entity.setType(TypeCode.FILE_TYPE_MODEL);
  59. fileRepository.save(entity);
  60. return new ResponseResult (200, entity);
  61. }
  62. /**
  63. * 特别需求,只能用文件名,不能用时间戳
  64. */
  65. public ResponseResult uploadVector(MultipartFile file, String savePath, String directoryName) {
  66. if (file.isEmpty() || file.getSize() <= 0) {
  67. log.info("文件为空");
  68. return new ResponseResult (50001, MsgCode.E50001);
  69. }
  70. // 文件名全名
  71. String fullFileName = file.getOriginalFilename();
  72. // 创建目录路径
  73. savePath = savePath + directoryName + File.separator;
  74. FileUtils.createDir(savePath);
  75. // 拼接唯一文件名
  76. // String fileName = FileUtils.dateStr() + fullFileName;
  77. // 文件保存路径
  78. String filePath = savePath + fullFileName;
  79. // 写文件到本地
  80. try {
  81. // FileUtils.bigFileWrite(file.getInputStream(), filePath);
  82. byte[] bytes = file.getBytes();
  83. String content = Base64.getEncoder().encodeToString(bytes);
  84. // FileUtils.fileWriter(content, filePath);
  85. FileUtils.base64ToFileWriter(content, filePath);
  86. } catch (IOException e) {
  87. e.printStackTrace();
  88. }
  89. log.info("filePath: {}", filePath);
  90. // 保存信息到db
  91. FileEntity entity = new FileEntity();
  92. entity.setFileName(fullFileName);
  93. entity.setFileUrl(filePath);
  94. // entity.setRecStatus("A");
  95. entity.setCreateTime(new Date());
  96. entity.setUpdateTime(new Date());
  97. entity.setType(TypeCode.FILE_TYPE_VECTOR);
  98. fileRepository.save(entity);
  99. // 修改生成目录的权限
  100. String cmd = CommandMsg.VECTOR_DIRECTORY_PERMISSION;
  101. cmd = cmd.replace("@fileName", directoryName);
  102. log.info("cmd : {}", cmd);
  103. cmdServer.exeCmd(cmd);
  104. cmd = CommandMsg.VECTOR_DIRECTORY_VTS;
  105. cmd = cmd.replace("@fileName", directoryName);
  106. log.info("cmd change user: {}", cmd);
  107. cmdServer.exeCmd(cmd);
  108. return new ResponseResult (200, entity);
  109. }
  110. @Override
  111. public ResponseResult deleteFileById(Long id) {
  112. // 删除服务器文件
  113. Optional<FileEntity> e = fileRepository.findById(id);
  114. if (!e.isPresent()) {
  115. return new ResponseResult(50002, MsgCode.E50002);
  116. }
  117. FileEntity fileEntity = e.get();
  118. String fileName = fileEntity.getFileName();
  119. // 文件
  120. if (fileName.contains(".")) {
  121. File file = new File(fileEntity.getFileUrl());
  122. file.delete();
  123. } else { // 目录
  124. FileUtils.delAllFile(fileEntity.getFileUrl());
  125. }
  126. // 删除数据库记录
  127. fileRepository.deleteById(id);
  128. return new ResponseResult(200, "success");
  129. }
  130. public static void main(String[] args) {
  131. String a = "aaa.bb";
  132. String b = "aaa";
  133. System.out.println(a.contains("."));
  134. System.out.println(b.contains("."));
  135. }
  136. }