java - 为什么我使用 JMimeMagic lib 获取 CSV 文件的 mimetype text/plain?

标签 java mime-types

我正在使用 JMimeMagic 库来验证 CSV 文件上传。

对于 CSV 和所有其他文本文件(txt、JSP 等),它给我文本/纯 mime 类型。

logger.debug("Checking magic content");
MagicMatch match;
match = Magic.getMagicMatch(getPromotionOptIn().getUpload(),false);
logger.debug("Actual file mimetype=" + match.getMimeType());

我不应该为 CSV 文件获取 text/csv 吗? (See mime 类型的所有列表)。

或者我将验证放在 text/plain 上,认为它是一个有效的 CSV 文件,这很好。

最佳答案

由于 CSV 文件可以有多个不同的分隔符,我怀疑 csv 文件只是被识别为文本文件(这是真的)。​​

如果您看到一个文本文件,您如何确定它是一个 CSV 文件?文中是否有逗号、分号等?如果它们属于一个条目而分隔符是其他东西(如 |、#、@ 等)怎么办?

如果没有更多信息,您将很难确定,JMimeMagic 也会遇到同样的问题。因此它只会返回它确定的内容:该文件是一个文本文件。因此你“只”得到“文本/纯文本”。

我不知道那个库,但从文档/源看来你可以提示 *.csv 文件有 text/csv mime 类型使用Magic.addHint("csv", someMatcher)。请注意,您可能必须为第二个参数传递 true,否则这些提示可能会被忽略(从查看源代码来看似乎如此)。

这仍然取决于文件扩展名是否正确,即如果有人上传了包含其他内容的 .csv 文件,您将获得错误的 MIME 类型。

但是,JMimeMagic 似乎无论如何都不会做很多内容检查。至少我在 sourceforge/github 上找到的资源中没有找到太多。只有文本文件检测器,因此您可能必须为其他 MIME 类型和文件格式添加自己的内容检测器。

关于java - 为什么我使用 JMimeMagic lib 获取 CSV 文件的 mimetype text/plain?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679365/

相关文章:

java - 无法使用 Slick2d 和 Java 获取列表

java - 使用java通过手机从PC发送消息

java - Apache Tika - 检测 JSON/PDF 特定的 mime 类型

text-files - 如何在谷歌驱动器中查看 C# .cs 文件?

java - 从 POST 到 GET 的调度程序转发方法

java - Spring Boot 中的 Google 云部署错误 - 部署失败 : Non zero exit: 1

java - Gretty,从存储库设置 "Module specified Libraries"

java - 如何在 Jersey 中获取上传文件的 MIME 类型

jquery - json 问题(使用 zend 框架评估 ajax uploader )

php - 上传时检查文件类型,以及浏览器依赖问题