383 Stimmen

Wie erhält man den Medientyp (MIME-Typ) einer Datei?

Wie kann man mit Java einen Medientyp (MIME-Typ) aus einer Datei ermitteln? Bislang habe ich JMimeMagic und Mime-Util ausprobiert. Das erste gab mir Speicherausnahmen, das zweite schließt seine Streams nicht richtig.

Wie würden Sie die Datei untersuchen, um ihren tatsächlichen Typ zu bestimmen (nicht nur anhand der Erweiterung)?

0voto

user1050755 Punkte 10123

Wenn Sie eine verlässliche (d.h. konsistente) Methode für die Zuordnung von Dateierweiterungen zu MIME-Typen suchen, verwende ich die folgende:

https://github.com/jjYBdx4IL/misc/blob/master/text-utils/src/main/java/com/github/jjYBdx4IL/utils/text/MimeType.java

Sie enthält eine Datenbank für gebündelte Mime-Typen und kehrt im Grunde die Logik der MimetypesFileTypeMap-Klasse von javax.activation um, indem sie die Datenbank zur Initialisierung der "programmatischen" Einträge verwendet. Auf diese Weise haben die in der Bibliothek definierten Typen immer Vorrang vor denen, die in nicht gebündelten Ressourcen definiert sind.

0voto

Abdennour TOUMI Punkte 75271

Wenn Sie mit einem Linux-Betriebssystem arbeiten, gibt es eine Befehlszeile file --mimetype :

String mimetype(file){

   //1. run cmd
   Object cmd=Runtime.getRuntime().exec("file --mime-type "+file);

   //2 get output of cmd , then 
    //3. parse mimetype
    if(output){return output.split(":")[1].trim(); }
    return "";
}

Dann

mimetype("/home/nyapp.war") //  'application/zip'

mimetype("/var/www/ggg/au.mp3") //  'audio/mp3'

-1voto

sahmad Punkte 144

Ich habe es mit folgendem Code gemacht.

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MimeFileType {

    public static void main(String args[]){

        try{
            URL url = new URL ("https://www.url.com.pdf");

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setDoOutput(true);
            InputStream content = (InputStream)connection.getInputStream();
            connection.getHeaderField("Content-Type");

            System.out.println("Content-Type "+ connection.getHeaderField("Content-Type"));

            BufferedReader in = new BufferedReader (new InputStreamReader(content));

        }catch (Exception e){

        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X