Java Base64解码错误及解决方法

网友投稿 831 2023-02-16


Java Base64解码错误及解决方法

问题提出:

自己在做一个小网站充当练手,但是前端图片经过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();

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 {http://

if (out != null) {

out.close();

}

}

return newPath.toString();

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vue+iview+less+echarts实战项目总结
下一篇:babel之配置文件.babelrc入门详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~