FileComponents.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.ydtech.modules.order.components;
  2. import com.ydtech.exception.SystemException;
  3. import com.ydtech.utils.baidu.FileUtil;
  4. import net.lingala.zip4j.core.ZipFile;
  5. import net.lingala.zip4j.exception.ZipException;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.multipart.MultipartFile;
  9. import java.io.File;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.net.URI;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. @Component
  16. public class FileComponents {
  17. @Value("${upload.file.path}")
  18. private String uploadFilePath;
  19. @Value("${upload.file.url}")
  20. private String showFileUrl;
  21. @Value("${api.url}")
  22. private String apiUrl;
  23. public String gainCarInsPolicyNew(String url, String fileName, String subOrderId, String password,boolean flag) {
  24. try {
  25. String dir = uploadFilePath + "carInsPolicyNew/" + subOrderId + "/";
  26. String showPath = apiUrl + showFileUrl + "carInsPolicyNew/" + subOrderId + "/" + fileName;
  27. File existFile = new File(dir + fileName);
  28. if (existFile.exists()) {
  29. if(!flag){
  30. return showPath;
  31. }else{
  32. //刪除重新生成
  33. existFile.delete();
  34. }
  35. }
  36. File folder = new File(dir);
  37. if (!folder.isDirectory()) {
  38. folder.mkdirs();
  39. }
  40. unzipFile(url, dir, password + ".zip", password, fileName);
  41. return showPath;
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. throw new SystemException("文件异常");
  45. }
  46. }
  47. public String gainCarInsPolicy(String url, String fileName, String licensePlate, String password) {
  48. try {
  49. String dir = uploadFilePath + "carInsPolicy/" + licensePlate + "/";
  50. String showPath = apiUrl + showFileUrl + "carInsPolicy/" + licensePlate + "/" + fileName;
  51. File existFile = new File(dir + fileName);
  52. if (existFile.exists()) {
  53. return showPath;
  54. }
  55. File folder = new File(dir);
  56. if (!folder.isDirectory()) {
  57. folder.mkdirs();
  58. }
  59. unzipFile(url, dir, password + ".zip", password, fileName);
  60. return showPath;
  61. } catch (Exception e) {
  62. e.printStackTrace();
  63. throw new SystemException("文件异常");
  64. }
  65. }
  66. public String gainCarInsPolicyNew(MultipartFile file, String subOrderId, boolean flag) {
  67. try {
  68. String dir = uploadFilePath + "carInsPolicyNew/" + subOrderId + "/";
  69. String showPath = apiUrl + showFileUrl + "carInsPolicyNew/" + subOrderId + "/" + file.getOriginalFilename();
  70. File existFile = new File(dir + file.getOriginalFilename());
  71. if (existFile.exists()) {
  72. if (!flag) {
  73. return showPath; // 已存在且不要求覆盖
  74. } else {
  75. existFile.delete(); // 删除旧文件
  76. }
  77. }
  78. File folder = new File(dir);
  79. if (!folder.isDirectory()) {
  80. folder.mkdirs();
  81. }
  82. // 将上传的文件保存到本地
  83. File destFile = new File(dir + file.getOriginalFilename());
  84. file.transferTo(destFile);
  85. return showPath;
  86. } catch (Exception e) {
  87. e.printStackTrace();
  88. throw new SystemException("文件上传异常");
  89. }
  90. }
  91. // public static boolean uploadCarInsPolicyNew(MultipartFile file, String fileName, String subOrderId, boolean flag) {
  92. // FileComponents fileComponents = new FileComponents();
  93. // String policyPath = fileComponents.gainCarInsPolicyNew(file, fileName, subOrderId, flag);
  94. // return true;
  95. // }
  96. public static void unzipFile(String url, String zipPath, String zipName, String password, String newFileName) throws ZipException,
  97. IOException {
  98. String path = zipPath + zipName;
  99. URI u = URI.create(url);
  100. InputStream inputStream = u.toURL().openStream();
  101. File file = new File(path);
  102. FileUtil.copyInputStreamToFile(inputStream, file);
  103. ZipFile zipFile = new ZipFile(path);
  104. zipFile.setPassword(password);
  105. String s = zipPath + password + "/";
  106. zipFile.extractAll(s);
  107. String fileName = getFileNames(s).get(0);
  108. File oldFile = new File(s + fileName);
  109. File newFile = new File(zipPath, newFileName);
  110. oldFile.renameTo(newFile);
  111. }
  112. /**
  113. * 得到文件名称
  114. */
  115. public static List<String> getFileNames(String path) {
  116. File file = new File(path);
  117. if (!file.exists()) {
  118. return null;
  119. }
  120. List<String> fileNames = new ArrayList<>();
  121. return getFileNames(file, fileNames);
  122. }
  123. /**
  124. * 得到文件名称
  125. *
  126. * @param file 文件
  127. * @param fileNames 文件名
  128. * @return {@link List}<{@link String}>
  129. */
  130. public static List<String> getFileNames(File file, List<String> fileNames) {
  131. File[] files = file.listFiles();
  132. for (File f : files) {
  133. if (f.isDirectory()) {
  134. getFileNames(f, fileNames);
  135. } else {
  136. fileNames.add(f.getName());
  137. }
  138. }
  139. return fileNames;
  140. }
  141. }