В моем случае:
ужно получить MediaType iana.org, а не application / zip или application / x-tika-msoffice для таких документов, как odt, ppt, pptx, xlsx и т. Д.
Если вы посмотрите на mimetypes.xml, то есть элементы mimeType, состоящие из mime-типа iana.org и «sub-class-of»
<mime-type type="application/msword">
<alias type="application/vnd.ms-word"/>
............................
<glob pattern="*.doc"/>
<glob pattern="*.dot"/>
<sub-class-of type="application/x-tika-msoffice"/>
</mime-type>
Как получить имя mime-типа iana.org вместо имени родительского типа?
При тестировании обнаружения MIME-типа я делаю:
MediaType mediaType = MediaType.parse(tika.detect(inputStream));
String mimeType = mediaType.getSubtype();
Результаты теста :
FAILED: getsCorrectContentType("application/vnd.ms-excel", docs/xls/en.xls)
java.lang.AssertionError: expected:<application/vnd.ms-excel> but was:<x-tika-msoffice>
FAILED: getsCorrectContentType("vnd.openxmlformats-officedocument.spreadsheetml.sheet", docs/xlsx/en.xlsx)
java.lang.AssertionError: expected:<vnd.openxmlformats-officedocument.spreadsheetml.sheet> but was:<zip>
FAILED: getsCorrectContentType("application/msword", doc/en.doc)
java.lang.AssertionError: expected:<application/msword> but was:<x-tika-msoffice>
FAILED: getsCorrectContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document", docs/docx/en.docx)
java.lang.AssertionError: expected:<application/vnd.openxmlformats-officedocument.wordprocessingml.document> but was:<zip>
FAILED: getsCorrectContentType("vnd.ms-powerpoint", docs/ppt/en.ppt)
java.lang.AssertionError: expected:<vnd.ms-powerpoint> but was:<x-tika-msoffice>
Есть ли способ получить фактический подтип из mimetypes.xml? Вместо x-tika-msoffice или application / zip?
Более того, я никогда не получаю application / x-tika-ooxml, а application / zip для документов xlsx, docx, pptx.