新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关Java Base64解码错误怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
恩平网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。成都创新互联公司从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。问题提出:
自己在做一个小网站充当练手,但是前端图片经过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 { if (out != null) { out.close(); } } return newPath.toString(); }
关于“Java Base64解码错误怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。