如何在保存到磁盘之前验证ZipFile的内容

时间:2012-01-25 15:10:57

标签: java file-upload upload zipfile

我有一个应用程序,要求用户在其他文件中上传包含xml报告文件的zipfile。

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

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

我使用Spring multipart CommonsMultipartFile来管理上传。

该应用程序使用Java,jsp,tomcat

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

但检测magic bytes会更快,因为ZIP格式为50 4B

答案 1 :(得分:0)

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

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