我收到一个带有包含多部分MIME的附件的java servlet上的SOAPMessage。这样做:HttpServletRequest InputStream是否损坏?
InputStream inputStream = request.getInputStream();
byte[] data = IOUtils.toByteArray(inputStream);
File file = new File("/usr/local/user/message.txt");
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
给我multipart mime中的二进制代码损坏的数据。任何人都知道这是为什么发生?我将二进制数据复制到一个文件,并将文件扩展名更改为适当的图像扩展名,但我得到一个损坏的图像。比较message.txt和.snoop文件的十六进制数据表明,导致失真的十六进制数据存在细微差异。 ASCII数据没有变化。谢谢。
有失真,因为在开始时看起来图像看起来是正确的,但由于十六进制值错误,它在一段时间后开始显得很奇怪。例如:06 04 04 04 04 04 06 04 04 06 0a从客户端变成06 04 04 04 04 04 06 04 04 06 0D我完成上述操作后。
“比较message.txt和.snoop文件的十六进制数据表明,导致失真的十六进制数据存在细微差异”。你能扩展这些扭曲吗?另外,如果您有网络侦听/捕获,您是否可以使用客户端发送的Content-Encoding头更新问题? – 2011-06-17 09:37:09
内容编码没有发送,所以假设它是二进制的。如您所看到的失真可以看到图片在开始时看起来是正确的,但由于十六进制值是错误的,它在一段时间后开始显得很奇怪。例如:06 04 04 04 04 04 06 04 04 06 0a从客户端变成06 04 04 04 04 04 06 04 04 06 0D我完成上述操作后。 – Maurice 2011-06-17 09:46:58
0A是LF,0D是CR。我认为这是unix vs windows行尾的问题。 – 2011-06-17 09:52:54