Почему преобразование 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.