2013-08-21 40 views
1

我有一个Java Web应用程序,允许用户上传Word或PDF文件。上传.DOCX文件时,我有2个用户抱怨错误的文件类型。我得到了这两个文件并上传到我自己的电脑中。两者工作顺利。MS Word文档在不同的浏览器中有不同的MIME类型

我使用MultipartRequest.getContentType()来获取文件类型。然后使用以下来检查

if(!(myFileType.equals("application/pdf") || myFileType.equals("application/msword") || myFileType.equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document"))){ 
       errMsg = "Wrong file type. Only PDF and MS Word are accepted";   
} 

在我看来,这是客户端PC的问题。浏览器?防毒软件?有没有人有线索?

[新增]我在日志文件中发现某些PDF文件也有错误类型。如果存在错误的文件类型错误,我确实需要记录MIME类型。

[已添加2]我要求一个用户在程序修改后再次上传。你猜怎么了?这次没有错误。晕!

回答

1

我们在我们的应用程序,有些浏览器报告的.docx为ZIP(MIME类型应用程序/ zip或应用程序/ x-zip-发现压缩)。这可能是因为.docx文件实际上是压缩文件,浏览器正在进行一些神奇的数字扫描或某些事情。

基本上,就是不要相信客户端软件报告的mimetypes。不要相信扩展。

0

简短的答案是否定的,不同的浏览器没有不同的MIME类型。但是,docx不会与application/msword一起使用。请参阅此链接正确的MIME类型为办公2007+ DOCX等文件:

http://www.kattare.com/docs/faq_view/822/how-do-i-add-microsoft-office-2007-support-mime-types-to-tomcat.html

+0

另外,一个简单的调试步骤是在你的'if'块中打印输入的MIME类型,看看它为什么失败 – StormeHawke

+0

道歉,我没有在你的列表中看到最后一个MIME类型。仍然建议打印出你的if区块里面的MIME类型,看看弹出了什么 – StormeHawke

+0

谢谢!我正在修改progrmam来记录MIME类型。 – lonelyloner