Base64ImageSaver.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.huimv.wine.utils;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.util.Base64;
  7. public class Base64ImageSaver {
  8. public static String saveBase64(String base64Image, String filePath) {
  9. // 分割Base64字符串为两部分:头部信息和编码数据
  10. String[] parts = base64Image.split(",", 2);
  11. if (parts.length != 2) {
  12. throw new IllegalArgumentException("Invalid Base64 image string format");
  13. }
  14. String contentType = parts[0];
  15. String base64Data = parts[1];
  16. // 解码Base64数据
  17. byte[] decodedBytes = Base64.getDecoder().decode(base64Data);
  18. // 提取文件扩展名
  19. String ext = contentType.split("/")[1].split(";")[0];
  20. // 拼接完整的文件路径,包括扩展名
  21. Path filePathWithExt = Paths.get(filePath).resolve(filePath + "." + ext);
  22. try {
  23. // 将解码后的数据写入文件
  24. Files.write(filePathWithExt, decodedBytes);
  25. } catch (IOException e) {
  26. // 处理文件写入错误
  27. e.printStackTrace();
  28. return "文件存储失败: " + e.getMessage();
  29. }
  30. // 如果一切顺利,返回保存的文件路径
  31. return filePathWithExt.toString();
  32. }
  33. public static void main(String[] args) {
  34. String base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD/2wBDAAUDBAQEAwUEBAQFBgcGBggHBwcICxIB..."; // 示例Base64编码的图像字符串
  35. String filePath = "path/to/save/image"; // 不包括扩展名的文件路径
  36. String result = saveBase64(base64Image, filePath);
  37. System.out.println(result); // 打印保存的文件路径或错误信息
  38. }
  39. }