ParseByteToFileUtils.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. }