Szukam wśród standardowych bibliotek (takich jak apache commons, jax, jboss, javax) dla interfejsu lub wyliczenia, które zawiera wartości wszystkich standardowych typów mime (aka content-type).
Ten interfejs nie powinien być zbytnio obciążony innymi klasami, które utrudniałyby włączenie całej paczki jako kodu źródłowego gwt.
na przykład
interface ContentType{
String JSON = "Application/JSON";
blah ... blah ...
}
lub,
enum ContentType{
JSON("Application/JSON"),
blah ... blah ...
}
java
gwt
mime-types
content-type
guava
Błogosławiony Geek
źródło
źródło
Odpowiedzi:
Biblioteka Guawa
Mamy Guava klasę na to:
com.google.common.net.MediaType
.Został wydany z guawą 12, jak podano w kodzie źródłowym oraz w numerze 823 . Dostępne są również źródła .
źródło
com.google.common.net.MediaType
, ponieważMediaType.toString()
nie jest to stała czasowa kompilacji i dlatego nie można jej używać w adnotacjachZ https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/MediaType.html :
źródło
Jeśli używasz Spring Framework, istnieje klasa MediaType dla typowych typów zawartości:
źródło
APPLICATION_ZIP
Jest teraz także klasa
org.apache.http.entity.ContentType
z pakietuorg.apache.httpcomponents.httpcore
, począwszy od 4.2 w górę.źródło
application/pdf
typu mime. Niestety ta klasa nie ma stałej dla pdf :(javax.ws.rs.core.MediaType
z JAX-RSźródło
Java 7 na ratunek!
Możesz przekazać plik lub nazwę pliku, a to zwróci typ MIME.
http://docs.oracle.com/javase/7/docs/api/javax/activation/MimetypesFileTypeMap.html
źródło
W androidannotacjach jest również
MediaType
klasa na wypadek, gdybyś chciał używać z Androidem ! Zobacz tutaj .źródło
Jeśli korzystasz z Androida, masz wiele możliwości, z których tylko pierwsza jest rodzajem „wyliczenia”:
HTTP
(który został wycofany w API 22), na przykładHTTP.PLAIN_TEXT_TYPE
lubMimeTypeMap
, na przykładfinal String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
Zobacz także
FileProvider.getType()
.URLConnection
który zapewnia następujące metody:guessContentTypeFromStream(InputStream is)
guessContentTypeFromName(String url)
getFileNameMap()
Na przykład
źródło
Jak wskazano w odpowiedzi powyżej, możesz użyć,
javax.ws.rs.core.MediaType
który ma wymagane stałe.Chciałem również udostępnić naprawdę fajny i przydatny link, który znalazłem, który zawiera odniesienia do wszystkich stałych Javax w jednym miejscu - https://docs.oracle.com/javaee/7/api/constant-values.html .
źródło
Rozwiązałem to za pomocą klasy statycznej:
źródło
Jak już napisano we wcześniejszej odpowiedzi, większość typowych typów MIME jest konfigurowana na serwerze WWW. Na przykład w tomcat conf / mamy web.xml z następującą konfiguracją MIME:
Utwórz odbiornik startowy, który uruchamia się, gdy aplikacja internetowa jest uruchamiana, analizuje ten plik XML i tworzy ENUMS dla Ciebie i wiąże go z kontekstem serwletu w celu udostępnienia w dół.
źródło