- Как определить тип MIME файла в android?
- 21 ответов:
- обновление (19.03.2018)
- How to determine MIME type of file in android?
- 21 answers
- Ни один из ответов здесь не совершенны. Вот ответ комбинируя лучшие элементы всех лучших ответов:
- Get mime type file android
- Как определить тип MIME файла в android?
- 21 ответов
- обновление (19.03.2018)
- Как определить тип файла MIME в android?
Как определить тип MIME файла в android?
Предположим, у меня есть полный путь к файлу, например:(/sdcard/tlogo.формат PNG.) Я хочу знать его тип MIME.
Я создал функцию для его
но когда я вызываю его, он возвращает null.
21 ответов:
в первую очередь, вы должны рассмотреть вызова MimeTypeMap#getMimeTypeFromExtension() , например:
вышеуказанное решение MimeTypeMap возвращает значение null в моем использования. Это работает, и проще:
оптимальный вариант Йенс’ ответ с нулевой безопасностью и резервным типом.
важно: getFileExtensionFromUrl() работает только с строчные буквы!
обновление (19.03.2018)
бонус: выше методы как менее подробный функция расширения Котлина:
обратите супер пристальное внимание на umerk44 ‘ s решение выше. getMimeTypeFromExtension вызывает guessMimeTypeTypeFromExtension и чувствителен к регистру. Я потратил на это целый день, а потом присмотрелся — getMimeTypeFromExtension вернутся NULL Если вы ее пройдете «формат JPG», тогда как он будет возвращать «изображение/jpeg» если вы передадите это «формат JPG».
иногда ответы джеба и Йенса не работают и возвращают null. В этом случае я использую следующее решение. Глава файла обычно содержит подпись типа. Я читаю его и сравниваю с известным в список подписей.
signatureId — это индекс подписи в массиве подписей. Например,
Теперь у меня есть тип файла, даже если URI файла нет. Далее я получаю тип mime по типу файла. Если вы не знаете, какой тип mime получить, вы можете найти правильный в в этой таблице.
это работает для многих типов файлов. Но для видео это не работает, потому что вам нужно известный видеокодек, чтобы получить тип mime. Чтобы получить тип mime видео я использую MediaMetadataRetriever.
вот решение, которое я использовал в своем приложении для Android:
MimeTypeMap может не распознавать некоторые расширения файлов,такие как flv,mpeg,3gpp, cpp. Поэтому вам нужно подумать, как развернуть MimeTypeMap для поддержания вашего кода. Вот такой пример.
плюс, вот полный список типов MIME
в то время как из asset/file(обратите внимание, что несколько случаев отсутствуют в MimeTypeMap).
в то время как использование ContentResolver
в то время как http / https запрос
Я пытался использовать стандартные методы для определения типа mime, но я не могу сохранить расширение файла с помощью MimeTypeMap.getFileExtensionFromUrl(uri.getPath()). Этот метод вернул мне пустую строку. Поэтому я сделал нетривиальное решение, чтобы сохранить расширение файла.
вот метод возврата расширения файла
и сохранив расширение файла можно получить тип mime, как показано ниже
на Xamarin Android (из ответа @HoaLe выше)
вышеуказанное решение вернуло null в случае .rar-файл, используя URLConnection.guessContentTypeFromName (url) работал в этом случае.
у вас есть несколько вариантов, чтобы получить расширение файла: как: 1- String filename = uri.getLastPathSegment(); посмотреть этот ссылке
2-Вы можете использовать этот код также
но это не хорошо aproch. 3-Если у вас есть URI файла, то используйте этот код
4-Если у вас есть URL, то используйте этот код:
Источник
How to determine MIME type of file in android?
November 2018
96.6k time
Suppose I have a full path of file like:(/sdcard/tlogo.png). I want to know its mime type.
I created a function for it
but when i call it, it returns null.
21 answers
Обратите супер пристальное внимание umerk44 «ы решения выше. getMimeTypeFromExtension вызывает guessMimeTypeTypeFromExtension и регистрозависимо. Я провел день на этом потом присмотрелся — getMimeTypeFromExtension вернется , NULL если вы передаете его «JPG» в то время как он будет возвращать «изображение / JPEG» , если передать его «JPG».
В первую очередь, вы должны рассмотреть вопрос вызова MimeTypeMap#getMimeTypeFromExtension() , как это:
Для Xamarin Android (от @ HoaLe Ответим выше)
Решение MimeTypeMap Возвращено нуль в моем использовании. Это работает, и проще:
Выше решение, возвращенное в нуль в случае .rar файл, используя URLConnection.guessContentTypeFromName (URL) работал в этом случае.
MimeTypeMap может не распознать некоторые расширения файлов, как FLV, MPEG, 3gpp, CPP. Таким образом, вы должны думать, как расширить MimeTypeMap для поддержания вашего кода. Вот такой пример.
Кроме того, здесь есть полный перечень типов пантомимы
Ни один из ответов здесь не совершенны. Вот ответ комбинируя лучшие элементы всех лучших ответов:
Я судимый использовать Standart методу для определения типа пантомимы, но я не могу сохранить расширение файла с помощью MimeTypeMap.getFileExtensionFromUrl (uri.getPath ()). Этот метод возвращал мне пустую строку. Так что я сделал нетривиальное решение сохранить Расширение файла.
Вот метод, возвращающий Расширение файла
И сохранивший Расширение файла можно получить тип пантомимы, как показано ниже
Иногда Джеб и ответы Jens не работают и возвращают нуль. В этом случае я использую последующие решения. Глава файла обычно содержит тип подписи. Я прочитал его и сравнить с известными в списке подписей .
signatureId является показателем подписи в массиве подписей. Например,
Теперь у меня есть тип файла , даже если URI файла нет. Затем я получаю тип пантомимы по типу файла. Если вы не знаете , какой тип мима получить, вы можете найти правильные в этой таблице .
Она работает для многих типов файлов. Но для видео не работает, потому что вам нужно известный видеокодек , чтобы получить тип MIME. Для того, чтобы получить тип мим видео ; я использую MediaMetadataRetriever .
Источник
Get mime type file android
We use cookies to collect and analyze information on site performance and usage, to provide social media features and to enhance and customize content and advertisements.
Using Java 7
Using javax.activation.MimetypesFileTypeMap
The MimetypesFileMap class is used to map a File to a Mime Type. Mime types supported are defined in a ressource file inside the activation.jar.
The MimetypesFileTypeMap looks in various places in the user’s system for MIME types file entries. When requests are made to search for MIME types in the MimetypesFileTypeMap, it searches MIME types files in the following order:
- Programmatically added entries to the MimetypesFileTypeMap instance.
- The file .mime.types in the user’s home directory.
- The file /lib/mime.types.
- The file or resources named META-INF/mime.types.
- The file or resource named META-INF/mimetypes.default (usually found only in the activation.jar file).
This method is interesting when you need to deal with incoming files with the filenames normalized. The result is very fast because only the extension is used to guess the nature of a given file.
Using java.net.URL
Like the above method a match is done with the extension. The mapping between the extension and the mime-type is defined in the file [jre_home]\lib\content-types.properties
Using Apache Tika
This package is very up-to-date regarding the filetypes supported, Office 2007 formats are supported (docs/pptx/xlsx/etc. ).
Tika has a lot of dependencies . almost 20 jars ! But it can do a lot more than detecting filetype. For example, you can parse a PDF or DOC to extract the text and the metadata very easily.
Using JMimeMagic
Using mime-util
Using Droid
DROID uses internal and external signatures to identify and report the specific file format versions of digital files. These signatures are stored in an XML signature file, generated from information recorded in the PRONOM technical registry. New and updated signatures are regularly added to PRONOM, and DROID can be configured to automatically download updated signature files from the PRONOM website via web services.
It can be invoked from two interfaces, a Java Swing GUI or a command line interface.
Aperture framework
The Aperture code consists of a number of related but independently usable parts:
- Crawling of information sources: file systems, websites, mail boxes
- MIME type identification
- Full-text and metadata extraction of various file formats
- Opening of crawled resources
For each of these parts, a set of APIs has been developed and a number of implementations is provided.
Источник
Как определить тип MIME файла в android?
Предположим, у меня есть полный путь к файлу, например: (/sdcard / tlogo.формат PNG.) Я хочу знать его мимический тип.
Я создал для него функцию
но когда я вызываю его, он возвращает null.
21 ответов
прежде всего, вы должны рассмотреть возможность вызова MimeTypeMap#getMimeTypeFromExtension() , например:
обнаружение типа mime my
решение MimeTypeMap выше вернуло null в моем использовании. Это работает, и проще:
оптимальный вариант Йенс’ answere с нулевой безопасностью и резервным типом.
важно: getFileExtensionFromUrl() работает только с строчные!
обновление (19.03.2018)
бонус: выше методы, как менее подробный функция расширения Котлина:
обратите супер пристальное внимание на umerk44 ‘ s решение выше. getMimeTypeFromExtension вызывает guessMimeTypeTypeFromExtension и чувствителен к регистру. Я потратил на это целый день, а потом присмотрелся повнимательнее . —0—> вернутся NULL Если вы передадите его «JPG», тогда как он вернет «image / jpeg», если вы передадите его»jpg».
иногда ответы джеба и Йенса не работают и возвращают null. В этом случае я использую решение follow. Глава файла обычно содержит тип signature. Я читаю его и сравниваю с известным в список подписей.
signatureId — это индекс подписи в массиве сигнатур. Например,
Теперь у меня есть тип файла, даже если URI файла нет. Затем я получаю тип mime по типу файла. Если вы не знаете, какой тип mime получить, вы можете найти правильный в в этой таблице.
это работает для многих типов файлов. Но для видео это не работает, потому что вам нужен известный видеокодек, чтобы получить тип mime. Чтобы получить тип mime видео, я использую MediaMetadataRetriever.
вот решение, которое я использовал в своем приложении для Android:
MimeTypeMap может не распознать некоторые расширения файлов,такие как flv,mpeg,3gpp, cpp. Поэтому вам нужно подумать, как развернуть MimeTypeMap для поддержания вашего кода. Вот такой пример.
плюс, вот полный список типов MIME
протоколу HTTP: //www.sitepoint.com/web-foundations/mime-types-complete-list/
в то время как из актива/файла(обратите внимание, что несколько случаев отсутствуют в MimeTypeMap).
при использовании ContentResolver
в то время как http / https запрос
Я попытался использовать стандартные методы для определения типа mime, но я не могу сохранить расширение файла с помощью MimeTypeMap.getFileExtensionFromUrl (uri.getPath()). Этот метод вернул мне пустую строку. Поэтому я сделал нетривиальное решение для сохранения файла на.
вот метод возврата расширения файла
и сохранив расширение файла, можно получить тип mime, как показано ниже
на Xamarin Android (из ответа @HoaLe выше)
вышеуказанное решение вернуло null в случае .RAR-файл, используя URLConnection.в этом случае работал guessContentTypeFromName(url).
mime из локального файла:
у вас есть несколько вариантов, чтобы получить расширение файла:как: 1- String filename = uri.getLastPathSegment(); посмотреть этот ссылке
2-Вы можете использовать этот код также
но это не хорошо aproch. 3-Если у вас есть URI файла, используйте этот код
4-Если у вас есть URL, используйте этот код:
Источник
Как определить тип файла MIME в android?
Предположим, у меня есть полный путь к файлу, например: (/ sdcard / tlogo.png). Я хочу знать его тип мим.
Я создал для него функцию
Но когда я его вызываю, он возвращает null.
Прежде всего, вы должны подумать о вызове MimeTypeMap#getMimeTypeFromExtension() , например:
Определить тип mime моего
Решение MimeTypeMap выше вернуло null в моем использовании. Это работает, и это проще:
Оптимизированная версия Jens ‘ s answere с откатом.
Важно : getFileExtensionFromUrl () работает только с строчными буквами !
Обратите особое внимание на решение umerk44 выше. GetMimeTypeFromExtension вызывает метод guessMimeTypeTypeFromExtension и является CASE SENSITIVE. Я провел день после этого, а затем поближе посмотрел – getMimeTypeFromExtension вернет NULL, если вы передадите его «JPG», тогда как он вернет «image / jpeg», если вы передадите его «jpg»,
Иногда ответы Джеба и Йенса не работают и возвращают нуль. В этом случае я использую следующее решение. Глава файла обычно содержит подпись типа. Я прочитал его и сравню с известным в списке подписей .
signatureId – это индекс подписи в массиве подписей. Например,
Теперь у меня есть тип файла, даже если URI файла нет. Затем я получаю тип mime по типу файла. Если вы не знаете, какой тип mime получить, вы можете найти это в этой таблице .
Он работает для большого количества типов файлов. Но для видео это не работает, потому что вам нужен известный видеокодек, чтобы получить тип mime. Чтобы получить тип mime видео, я использую MediaMetadataRetriever .
Вот решение, которое я использовал в своем приложении для Android:
MimeTypeMap может не распознавать некоторые расширения файлов, такие как flv, mpeg, 3gpp, cpp. Поэтому вам нужно подумать о том, как расширить MimeTypeMap для поддержки вашего кода. Вот такой пример.
Кроме того, здесь приведен полный список типов mime
Вышеупомянутое решение вернуло null в случае файла .rar, используя URLConnection.guessContentTypeFromName (url), работавший в этом случае.
Mime из локального файла:
У вас есть множественный выбор, чтобы получить расширение файла: например: 1- String filename = uri.getLastPathSegment(); Посмотреть ссылку
2 – вы также можете использовать этот код
Но это нехорошо. 3 – если у вас есть URI файла, используйте этот код
4 – если у вас есть URL-адрес, используйте этот код:
Наслаждайся своим кодом 🙂
В то время как из актива / файла (обратите внимание, что в MimeTypeMap отсутствует несколько случаев).
При использовании ContentResolver
Я попытался использовать стандартные методы для определения типа mime, но я не могу сохранить расширение файла, используя MimeTypeMap.getFileExtensionFromUrl (uri.getPath ()). Этот метод вернул мне пустую строку. Поэтому я сделал нетривиальное решение для сохранения расширения файла.
Вот метод, возвращающий расширение файла
И, сохранив расширение файла, можно получить тип mime, как показано ниже.
Для Xamarin Android (из ответа @ HoaLe выше)
Источник