【发布时间】:2013-03-26 05:38:08
【问题描述】:
我正在使用帮助我从消息中心获取文件的网络服务。 文件类型可以是 XML 或 ZIP。
对于 ZIP 文件,内容类型为二进制。
我有这段代码:
private String extractPayload(String filePath, AttachmentPart attach){
FileOutputStream fileStream = null;
try {
DataHandler handler;
handler = attach.getDataHandler();
File f = new File(filePath);
fileStream = new FileOutputStream(filePath);
handler.writeTo(fileStream);
fileStream.flush();
} catch (Exception ex) {
logger.info("####Exception:" + ex.getMessage());
} finally {
if (fileStream != null)
fileStream.close();
}
return filePath;
}
现在,该代码可以正常获取 XML 文件,但对于 ZIP 文件,该文件被证明已损坏。 我使用来自 Messaging Hub 的文件实用程序下载了相同的文件,发现我通过 SOAP 附件获取的文件大小比其实际大小大 4 个字节左右。
更新: 附件编码为 7 位(如果这可能会造成阻碍),而另一个包含另一个 zip 的附件编码为 Quote-printable。两个 zip 都是从同一个 Web 服务中获取的(尽管它们的编码不同),结果都是损坏的。
编辑:我强烈认为问题出在我接收文件的编码上,这里是实际文件和接收到的附件文件之间的比较。
实际文件大小:9031 字节 收到的附件文件大小:9066 字节
我尝试在文档编辑器中比较这两个文件以找出两者之间的差异。 原始文件与获取附件文件的差异(二进制编辑器):
ed 更改为 3f , db 更改为 3f , d6 更改为 3f , 85 改为 3f , d0 改为 3f ,
等等。
Zip 文件包含一个 PDF 和一个 XML 文件。
两个文件的起始行相似,以PK开头
【问题讨论】: