Почему преобразование Bytearray в MIME-тип возвращает NULL

Невозможно получить MIME TYPE от bytearray - возвращает NULL для любого документа MIME TYPE.

    byte[] res ={-2,-1,0,114,0,101,0,115,0,117,0,108,0,116,0,13,0,10,0,73,0,32,0,108,0,111,0,118,0,101,0,32,0,73,0,110,0,100,0,105,0,97,0,43,0,52,0,51};
InputStream isr = new BufferedInputStream(new ByteArrayInputStream(res));
String mimeType = URLConnection.guessContentTypeFromStream(isr);
System.out.println(mimeType);

2 ответа

Глядя на источник, guessContentTypeFromStream поддерживает только очень ограниченное количество типов MIME, проверяя первые 16 байтов:

  • Приложение / Java-VM
  • применение / х-Java-объект-сериализованная
  • текст / html
  • application / xml (UTF-8, UTF-8 с BOM, UTF-16 LE/BE, UTF-32 LE/BE)
  • изображение / GIF
  • Изображение / х-битовый массив
  • Изображение / х-пиксельная
  • Изображение / PNG
  • Изображение / JPG
  • Изображение /vnd.fpx
  • аудио / базовый (.au LE/BE)
  • аудио / X-WAV

null возвращается как "text/plain", ни один из них. Если вам нужно угадать другой тип MIME, вы должны использовать другую библиотеку.

Потому что он не может понять, какой тип контента на самом деле. Javadocs говорят, что null возвращается, если тип содержимого не может быть определен.

Если вы хотите что-то лучше, вы можете начать с просмотра ответов и комментариев к этому вопросу: Получение MIME-файла в Java.

Другие вопросы по тегам