BASE64DecodedMultipartFile.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.fdkankan.common.util;
  2. import org.springframework.web.multipart.MultipartFile;
  3. import sun.misc.BASE64Decoder;
  4. import java.io.*;
  5. import java.util.UUID;
  6. public class BASE64DecodedMultipartFile implements MultipartFile {
  7. private final byte[] imgContent;
  8. private final String header;
  9. public BASE64DecodedMultipartFile(byte[] imgContent, String header) {
  10. this.imgContent = imgContent;
  11. this.header = header.split(";")[0];
  12. }
  13. @Override
  14. public String getName() {
  15. // TODO - implementation depends on your requirements
  16. return System.currentTimeMillis() + "-" + UUID.randomUUID().toString().replace("-", "") + "." + header.split("/")[1];
  17. }
  18. @Override
  19. public String getOriginalFilename() {
  20. // TODO - implementation depends on your requirements
  21. return System.currentTimeMillis() + "-" + UUID.randomUUID().toString().replace("-", "") + "." + header.split("/")[1];
  22. }
  23. @Override
  24. public String getContentType() {
  25. // TODO - implementation depends on your requirements
  26. return header.split(":")[1];
  27. }
  28. @Override
  29. public boolean isEmpty() {
  30. return imgContent == null || imgContent.length == 0;
  31. }
  32. @Override
  33. public long getSize() {
  34. return imgContent.length;
  35. }
  36. @Override
  37. public byte[] getBytes() throws IOException {
  38. return imgContent;
  39. }
  40. @Override
  41. public InputStream getInputStream() throws IOException {
  42. return new ByteArrayInputStream(imgContent);
  43. }
  44. @Override
  45. public void transferTo(File dest) throws IOException, IllegalStateException {
  46. try (FileOutputStream ios = new FileOutputStream(dest)){
  47. ios.write(imgContent);
  48. }
  49. }
  50. public static MultipartFile base64ToMultipart(String base64) {
  51. try {
  52. String[] baseStrs = base64.split(",");
  53. BASE64Decoder decoder = new BASE64Decoder();
  54. byte[] b = new byte[0];
  55. b = decoder.decodeBuffer(baseStrs[1]);
  56. for(int i = 0; i < b.length; ++i) {
  57. if (b[i] < 0) {
  58. b[i] += 256;
  59. }
  60. }
  61. return new BASE64DecodedMultipartFile(b, baseStrs[0]);
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. return null;
  65. }
  66. }
  67. }