1

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

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]我让一位用户在程序修改后再次上传。你猜怎么着?这次没有错误。头晕的!

4

2 回答 2

2

我们在我们的应用程序中发现一些浏览器将 .docx 报告为 zip(mimetype application/zip 或 application/x-zip-compressed)。这可能是因为 .docx 文件实际上是压缩文件,并且浏览器正在执行一些幻数扫描等。

基本上,不要相信客户端软件报告的模仿类型。也不要相信扩展。

于 2013-08-21T13:45:08.520 回答
0

简短的回答是否定的,不同的浏览器没有不同的 mime 类型。但是,docx 不适用于application/msword. 有关 office 2007+ docx 等文件的正确 mime 类型,请参阅此链接:

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

于 2013-08-21T13:44:38.553 回答