MIME Type ermitteln und in Servlet setzen

Status
Nicht offen für weitere Antworten.

deamon

Bekanntes Mitglied
Der ServletContext bietet die Methode getMimeType(zusendendeDatei), die anhand der Dateiendung den MIME Type ermittelt. Die ist jedoch nicht besonders hilfreich, wenn die Datei dynamisch erzeugt wird. Man könnte den MIME Type bei jeder Response von Hand setzen. Ich suche einen Weg, wie man das automatisieren kann.

Bei Spring MVC kann man den MIME Type für alle Vorlagendaten (z. B. FreeMarker-Templates) global auf etwa "text/html" setzen. Aber so ein Template könnte ja genauso gut eine Textdatei, ein XML-Dokument, JSON oder sonst irgendwas sein. Wie könnte man den MIME-Type automatisch ermitteln?

Ich habe drei Ideen, wie man das machen könnte:
* Der Endung der Template-Datei, wie ".ftl" für "FreeMarker Template", wird noch der eigentliche Typ vorangestellt. Also etwa "datei.text.ftl" und "datei.html.ftl".
* Verzeichnisnamen wie "txt/datei.ftl" und "html/datei.ftl"
* Speicherung des MIME-Typen in einer extra Datei wie "datei.mime", die enthielte dann z. B. "text/html".

Wenn aus dem Template die fertige Datei erzeugt wird, würde jeweils der MIME-Type aus dem Dateinamen bzw. der separaten Datei ermittelt.

Fällt euch noch was besseres ein?
 

deamon

Bekanntes Mitglied
Vielen Dank für eure Vorschläge. Sie zeigen mir, dass meine Ideen nicht völlig abwegig waren und helfen mir vielleicht bei der konkreten Lösung.
 
M

maki

Gast
Hab das damals so gemacht:

Java:
...
		response.setContentType(getContentType(file));
...

	private static String getContentType(java.io.File file) {
		MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap();

		String contentType = mimeTypesMap.getContentType(file);

		return contentType;
	}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben