ParseByteToFileUtils.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package cn.cslg.pas.common.utils;
  2. import cn.cslg.pas.service.common.FileManagerService;
  3. import cn.hutool.core.util.IdUtil;
  4. import org.apache.commons.io.input.XmlStreamReaderException;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.core.io.ByteArrayResource;
  7. import org.springframework.mock.web.MockMultipartFile;
  8. import org.springframework.stereotype.Component;
  9. import org.springframework.web.multipart.MultipartFile;
  10. import java.io.ByteArrayInputStream;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.lang.reflect.Method;
  14. import java.net.URLEncoder;
  15. import java.nio.charset.StandardCharsets;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. /**
  19. * @Author xiexiang
  20. * @Date 2024/1/11
  21. */
  22. @Component
  23. public class ParseByteToFileUtils {
  24. @Autowired
  25. private FileManagerService fileManagerService;
  26. public static MultipartFile convertBytesToMultipartFile(byte[] fileData, String fileName) throws IOException {
  27. InputStream inputStream = new ByteArrayInputStream(fileData);
  28. MultipartFile multipartFile = new MockMultipartFile("file", fileName, "application/octet-stream", inputStream);
  29. return multipartFile;
  30. }
  31. public String uploadFile(byte[] fileData, Integer type) throws IOException {
  32. List<MultipartFile> multipartFiles = new ArrayList<>();
  33. //保存生成地址
  34. String fileName = "";
  35. if (type.equals(1)) {
  36. fileName = IdUtil.simpleUUID() + ".xls";
  37. } else if (type.equals(2)) {
  38. fileName = IdUtil.simpleUUID() + ".pdf";
  39. }
  40. //文件原始名中的中文字符可能会乱码,对文件名进行URL编码
  41. String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
  42. MultipartFile multipartFile = this.convertBytesToMultipartFile(fileData, encodedFileName);
  43. multipartFiles.add(multipartFile);
  44. List<String> fileGuids = fileManagerService.uploadFileGetGuid(multipartFiles);
  45. String fileGuid = null;
  46. if (!fileGuids.isEmpty()) {
  47. fileGuid = fileGuids.get(0);
  48. }
  49. return fileGuid;
  50. }
  51. public String uploadFile2(byte[] fileData, Integer type,String name) throws IOException {
  52. List<MultipartFile> multipartFiles = new ArrayList<>();
  53. //保存生成地址
  54. String fileName = "";
  55. if (type.equals(1)) {
  56. fileName = name + ".xls";
  57. } else if (type.equals(2)) {
  58. fileName = name + ".pdf";
  59. }
  60. //文件原始名中的中文字符可能会乱码,对文件名进行URL编码
  61. MultipartFile multipartFile = this.convertBytesToMultipartFile(fileData, fileName);
  62. multipartFiles.add(multipartFile);
  63. List<String> fileGuids = fileManagerService.uploadFileGetGuid(multipartFiles);
  64. String fileGuid = null;
  65. if (!fileGuids.isEmpty()) {
  66. fileGuid = fileGuids.get(0);
  67. }
  68. return fileGuid;
  69. }
  70. }