【发布时间】:2015-07-09 22:22:13
【问题描述】:
我想将文件从 C# 传输到接受 base64 字符串的 java webservice。问题是,当我使用 c# Convert 类对文件进行编码时,它会生成一个基于 little endian unsigned byte[] 的字符串。
在 Java 中 byte[] 是有符号的/大端的。当我解码交付的字符串时,我得到一个不同的字节 [],因此文件已损坏。
如何将 C# 中的 byte[] 编码为 base64,它等于使用相同字符串在 java 中解码的 byte[]?
C#端:
byte[] attachment = File.ReadAllBytes(@"c:\temp\test.pdf");
String attachmentBase64 = Convert.ToBase64String(attachment, Base64FormattingOptions.None);
Java端:
@POST
@Path("/localpdf")
@Consumes("text/xml")
@Produces("text/xml")
public String getExtractedDataFromEncodedPdf(@FormParam("file") String base64String) {
if(base64String == null) return null;
byte[] data = Base64.decodeBase64(base64String.getBytes());
FileOutputStream ms;
try {
ms = new FileOutputStream(new File("C:\\Temp\\test1234.pdf"));
ms.write(data);
ms.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
文件 test1234.pdf 已损坏。
【问题讨论】:
-
Base64 不关心字节顺序。见stackoverflow.com/a/12025216/900547
标签: java c# base64 interop endianness