2

我有一个应用程序需要用户上传一个包含 xml 报告文件以及其他文件的 zip 文件。

我想要做的是,验证它是一个 zip,然后打开并检查是否有一个 xml 文件,并验证该 xml 中需要的一些节点。

我想在将此 zipfile 保存到磁盘/文件系统之前执行此操作,并且无需创建临时文件。如果文件通过验证,我只会保存文件。

我正在使用 Springmultipart CommonsMultipartFile来管理上传。

该应用程序正在使用 Java、jsp、tomcat

谢谢。

4

2 回答 2

1

请参阅我对 OP 的评论,了解在内存中缓冲整个文件的智慧。

对有效 zip 文件的快速第一次检查是检查前 4 个字节是否有适当的“魔术”字节。一个 zip 文件应该从前 4 个字节开始{(byte)0x50, (byte)0x4b, (byte)0x03, (byte)0x04}然而,真正检查它的唯一方法是尝试解压缩它。

于 2012-01-25T15:24:24.310 回答
0

如果要检查文件是否为 ZIP 文件,也许可以使用URLConnection该类的 getContentType() 方法?像这样的东西:

URL u = new URL(fileUrl);
URLConnection uc = u.openConnection();
String type = uc.getContentType();

但是检测魔术字节会快得多,对于 ZIP 格式,魔术字节是50 4B.

于 2012-01-25T15:17:23.810 回答