我有一个应用程序,要求用户在其他文件中上传包含xml报告文件的zipfile。
我想要做的是,要验证它是zip,然后打开并检查是否有xml文件,并验证该xml中需要的一些节点。
我想在将此zipfile保存到磁盘/文件系统之前执行此操作,并且创建临时文件。如果文件通过验证,我将只保存文件。
我使用Spring multipart CommonsMultipartFile
来管理上传。
该应用程序使用Java,jsp,tomcat
感谢。
答案 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}
开头。然而,真正检查它的唯一方法是尝试解压缩它。