2011-12-29 103 views
0

我正在上传文件到服务器使用普通上传API的可用。现在我想检查上传的文件是否是有效的文件。上传后检查文件类型

我可以有页面上的多个文件上传对话框。其中有不同的要求,应该接受不同类型的文件。

对于说: -

Input file 1 should take just exe 
Input file 2 should take just html 
Input file 3 should take just pptx 

我可以检查扩展和检查是一个解决方案,但它可能会发生一些人们可以假冒的延伸和上传txt文件,而不是exe

因此,如何能我检查正确类型的文件是否已经上传或者不使用Java

了一些Solution为同样的东西,但我不确定该怎么办呢?任何帮助,请

+0

你正在使用哪个API? – 2011-12-29 10:16:29

+0

我使用公地文件上传 – Varun 2011-12-29 10:18:35

回答

1

对于公地文件上传API,你就能得到上述内容类型如下:

FileItem file; 
String contentType = file.getContentType(); 

此基础上,你可以提供一些if-else来实现你的逻辑。 FileItem可能是DefaultFileItem

+0

这并不帮助可以伪造我可以改变'exe'文件的扩展名'jpg'和上传文件,它会给该文件类型为'image' – Varun 2012-01-16 06:38:22

1

检查扩展后,你还需要检查该文件的签名。这通常位于文件的前几个字节中。对于一个好的列表,请参阅http://www.garykessler.net/library/file_sigs.html,因为它包含相当多的文件和它们的签名。

即使这不是万无一失的,当然,但你会得到不钻研启发式它接近。

0

尝试加载每个文件与适当的方法。例如,尝试解析html文件并尝试使用POI加载pptx文件。它虽然不适用于exe。