我需要将Base64二进制元素附加到SOAP消息...我正在试运行以检查是否可以将从文件读取的值转换为Base64二进制文件。

这是下面的代码。在最后一行中,我尝试打印encode1的类型(我假设它应该是Base64二进制值),但显示以下内容...“附件[B” ...如何确认如果它的Base64二进制字符串?

Path path = Paths.get("c:/tomcatupload/text.csv");
byte[] attachment1 = Files.readAllBytes(path);
byte[] encoded1 = Base64.encode(attachment1);
System.out.println("Attachment"+ encoded1.getClass().getName());

最佳答案

Base-64 encoding是一种将任意字节转换为适合ASCII编码文本字符范围的字节的方法。无需任何解释即可完成-原始字节在发送者端转换为base-64;接收器将它们转换回字节流,仅此而已。

当代码显示encoded1.getClass().getName()时,它得到的只是字节数组的静态类型。为了将以base-64编码的数据解释为对程序有意义的内容,您需要了解作为base-64传输的基础数据的格式。一旦将字节交付给您(在您的情况下,这是encoded1字节数组),您需要确定其中的内容并采取相应的措施。

例如,如果将序列化的Java对象作为base-64发送给您,则需要获取encoded1,从中获取内存中的流,并使用常规的序列化机制读取该对象:

ByteArrayInputStream memStream = new ByteArrayInputStream(encoded1);
ObjectInputStream objStream = new ObjectInputStream(memStream);
Object attachedObject = objStream.readObject();

关于java - Java中的Base64二进制数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25765732/

10-13 04:12