使用DatatypeConverter.parseBase64Binary异常 [英] Exception using DatatypeConverter.parseBase64Binary

查看:3601
本文介绍了使用DatatypeConverter.parseBase64Binary异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发送PNG数据的JSON字符串,我想将图像保存到磁盘。

Am sending a json string of png data which i want to save the image to disk.

jsonInputString= URLDecoder.decode( inputString, "UTF-8" );
jsonInputString= jsonInputString.substring(inputStrjsonInputStringing.indexOf(",")+1);
byte[] decodedBytes = DatatypeConverter.parseBase64Binary(jsonInputString);

它被消毒

jsonInputString后:

jsonInputString after it gets sanitised:

<$c$c>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

结果

with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
 at javax.xml.bind.DatatypeConverter.parseBase64Binary(DatatypeConverter.java:296)

它的工作原理,但随机已经有一段开溜试图让它随机工作。

It works randomly but have been having a bugger of time trying to get it to randomly work.

从Web客户端的字符串出现这样

The string from the web client comes up as such

 jsonInputString = ....toDataURL('image/png');
 jsonInputString = encodeURIComponent(jsonInputString );
 console.log(jsonInputString );

任何帮助是pciated帮助我了解为什么我现在的code不起作用AP $ P $。

any help is appreciated to help me understand why my current code does not work.

更新:
JDK 1.6
Eclipse的靛蓝

Update: JDK 1.6 Eclipse indigo

推荐答案

DatatypeConverter.parseBase64Binary()不会在Java SDK 1.6超过65000长数据。在一个Applet我使用Java SDK 1.6中写道,我用parseBase64Binary(),它总是大于64K的数据坠毁,并与较小的数据工作的罚款。

DatatypeConverter.parseBase64Binary() does not work with data longer than 65000 in Java SDK 1.6. In an applet I wrote using Java SDK 1.6, I used parseBase64Binary() and it always crashed with data larger than 64K and worked fine with smaller data.

您可以使用它自带的Java SDK 1.6

You can use BASE64Decoder which comes with Java SDK 1.6

import sun.misc.BASE64Decoder;

,然后用它是这样的:

And then use it like this:

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes);

如果您有添加其他包都没有问题,你应该使用Apache的百科全书Base64.de codeBase64()

If you have no problems with adding other packages, you should use apache commons Base64.decodeBase64()

这篇关于使用DatatypeConverter.parseBase64Binary异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆