JavaBase64解码错误怎么办

这篇文章将为大家详细讲解有关Java Base64解码错误怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我们提供的服务有:做网站、成都网站制作、微信公众号开发、网站优化、网站认证、井研ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的井研网站制作公司

问题提出:

自己在做一个小网站充当练手,但是前端图片经过base64加密后传往后端在解码。但是一直都有问题,请大神赐教

  public static String base64ToImg(String src) throws IOException {
    String uuid = UUID.randomUUID().toString();
    StringBuilder newPath = new StringBuilder(IMG_ROOT_PATH);
    newPath.append(separator).
        append(uuid).
        append(IMG_SUFFIX);
    if(src == null){
      return null;
    }
    byte[] data = null;
    Base64.Decoder decoder = Base64.getDecoder();
    try (OutputStream out = new FileOutputStream(newPath.toString())) {
      data = decoder.decode(src);
      out.write(data);
      return newPath.toString();
    } catch (IOException e) {
      throw new IOException();
    }
  }
java.lang.IllegalArgumentException: Input byte array has wrong 4-byte ending unit

以上是相关的异常信息。我试图将前端的base64码粘贴到记事本然后自己在试着解码,也是同样问题。

解决办法:

IllegalArgumentException:非法参数异常,

试下这个,应该可以。

给你讲述下过程:

去了stackoverflow,debug。最后发现data为null,,加油吧,我们需要学的还很多

下次遇到问题debug下,看是哪条代码出现问题了,通过回答你,我也学到了很多

关键点在这里: throw new IOException();

Java Base64解码错误怎么办

try (OutputStream out = new FileOutputStream(newPath.toString())) {
      out.write(data);
    } catch (IOException e) {
      e.printStackTrace();
      throw new RuntimeException("异常是这么抛出的");
      //throw new RuntimeException(e);
    }
public static String base64ToImg(String src) throws IOException {
    String uuid = UUID.randomUUID().toString();
    StringBuilder newPath = new StringBuilder("xx");
    newPath.append("xx").
        append(uuid).
        append("xx");
    if (src == null) {
      return null;
    }
    byte[] data = Base64.getDecoder().decode(src);
    try (OutputStream out = new FileOutputStream(newPath.toString())) {
      out.write(data);
    } catch (IOException e) {
      e.printStackTrace();
    }
    return newPath.toString();
  }

补充另外一种常用关闭资源:

 public static String base64ToImg(String src) throws IOException {
    String uuid = UUID.randomUUID().toString();
    StringBuilder newPath = new StringBuilder("xx");
    newPath.append("xx").
        append(uuid).
        append("xx");
    if (src == null) {
      return null;
    }
    byte[] data = null;
    OutputStream out = null;
    Base64.Decoder decoder = Base64.getDecoder();
    try {
      out = new FileOutputStream(newPath.toString());
      data = decoder.decode(src);
      out.write(data);
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (out != null) {
        out.close();
      }
    }
    return newPath.toString();
  }

关于“Java Base64解码错误怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


网站名称:JavaBase64解码错误怎么办
网址分享:http://csdahua.cn/article/ghhehs.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流