Ich suche nach einer Java-Bibliothek, die Sie den Mime-Typ durch Betrachten des Dateiinhalts (Byte-Array). Ich habe dieses Projekt mit jmimemagic gefunden und es unterstützt keine neueren Dateitypen (zB MS Word docx Format), da es jetzt inaktiv ist (ab 2006).Java-Bibliothek, um den MIME-Typ von Dateiinhalt zu finden
Antwort
Verwenden Sie Apache Tika zur Inhaltserkennung. Bitte finden Sie den folgenden Link. http://tika.apache.org/0.8/detection.html. Wir haben so viele jar Abhängigkeiten, die Sie finden können, wenn Sie tika Maven bauen
ByteArrayInputStream bai = new ByteArrayInputStream(pByte);
ContentHandler contenthandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();
try {
parser.parse(bai, contenthandler, metadata);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TikaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Mime: " + metadata.get(Metadata.CONTENT_TYPE));
return metadata.get(Metadata.CONTENT_TYPE);
Vielleicht nützlich für jemanden, der auch die am häufigsten verwendeten Office-Formate benötigt (und nicht verwendet Apache Tika):
public class MimeTypeUtils {
private static final Map<String, String> fileExtensionMap;
static {
fileExtensionMap = new HashMap<String, String>();
// MS Office
fileExtensionMap.put("doc", "application/msword");
fileExtensionMap.put("dot", "application/msword");
fileExtensionMap.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
fileExtensionMap.put("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
fileExtensionMap.put("docm", "application/vnd.ms-word.document.macroEnabled.12");
fileExtensionMap.put("dotm", "application/vnd.ms-word.template.macroEnabled.12");
fileExtensionMap.put("xls", "application/vnd.ms-excel");
fileExtensionMap.put("xlt", "application/vnd.ms-excel");
fileExtensionMap.put("xla", "application/vnd.ms-excel");
fileExtensionMap.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
fileExtensionMap.put("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
fileExtensionMap.put("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
fileExtensionMap.put("xltm", "application/vnd.ms-excel.template.macroEnabled.12");
fileExtensionMap.put("xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
fileExtensionMap.put("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
fileExtensionMap.put("ppt", "application/vnd.ms-powerpoint");
fileExtensionMap.put("pot", "application/vnd.ms-powerpoint");
fileExtensionMap.put("pps", "application/vnd.ms-powerpoint");
fileExtensionMap.put("ppa", "application/vnd.ms-powerpoint");
fileExtensionMap.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
fileExtensionMap.put("potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
fileExtensionMap.put("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
fileExtensionMap.put("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
fileExtensionMap.put("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
fileExtensionMap.put("potm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
fileExtensionMap.put("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
// Open Office
fileExtensionMap.put("odt", "application/vnd.oasis.opendocument.text");
fileExtensionMap.put("ott", "application/vnd.oasis.opendocument.text-template");
fileExtensionMap.put("oth", "application/vnd.oasis.opendocument.text-web");
fileExtensionMap.put("odm", "application/vnd.oasis.opendocument.text-master");
fileExtensionMap.put("odg", "application/vnd.oasis.opendocument.graphics");
fileExtensionMap.put("otg", "application/vnd.oasis.opendocument.graphics-template");
fileExtensionMap.put("odp", "application/vnd.oasis.opendocument.presentation");
fileExtensionMap.put("otp", "application/vnd.oasis.opendocument.presentation-template");
fileExtensionMap.put("ods", "application/vnd.oasis.opendocument.spreadsheet");
fileExtensionMap.put("ots", "application/vnd.oasis.opendocument.spreadsheet-template");
fileExtensionMap.put("odc", "application/vnd.oasis.opendocument.chart");
fileExtensionMap.put("odf", "application/vnd.oasis.opendocument.formula");
fileExtensionMap.put("odb", "application/vnd.oasis.opendocument.database");
fileExtensionMap.put("odi", "application/vnd.oasis.opendocument.image");
fileExtensionMap.put("oxt", "application/vnd.openofficeorg.extension");
}
public static String getContentTypeByFileName(String fileName) {
// 1. first use java's buildin utils
FileNameMap mimeTypes = URLConnection.getFileNameMap();
String contentType = mimeTypes.getContentTypeFor(fileName);
// 2. nothing found -> lookup our in extension map to find types like ".doc" or ".docx"
if (!StringUtils.hasText(contentType)) {
String extension = FilenameUtils.getExtension(fileName);
contentType = fileExtensionMap.get(extension);
}
return contentType;
}
}
Sie haben keine Ahnung, wie lange ich nach einem Beispiel gesucht habe. Danke vielmals! – Mike
Das hat mir gerade viel Zeit gespart, um eine meiner Anwendungen zu aktualisieren, um die neueren MS Office-Erweiterungen richtig zu erkennen! Vielen Dank! – Saggio
Ich musste 'if (! StringUtils.hasText (contentType)) {' in 'if (StringUtils.isBlank (contentType)) {' ändern. Danke für den Codez! –
Ich verwende . Es beginnt mit einem kleinen Satz: $JRE_HOME/lib/content-types.properties
, aber Sie können Ihre eigenen hinzufügen. Erstelle eine Datei mime.types
im Format MimetypesFileTypeMap
's javadoc (Ich begann mit einer großen Liste aus dem Netz, massierte es und fügte Typen hinzu, die ich fehlte). Jetzt können Sie das in Ihrem Code hinzufügen, indem Sie Ihre mime.types
Datei öffnen und ihren Inhalt zu Ihrer Karte hinzufügen. Die einfachere Lösung besteht jedoch darin, Ihre mime.types
Datei zu der META-INF
Ihres Glases hinzuzufügen. java.activation
wird das automatisch abholen.
- 1. YAML Mimetyp?
- 2. Den verschlüsselten Dateiinhalt entschlüsseln?
- 3. C# Dateiinhalt lesen und Strings finden
- 4. Abrufen von doc-Dateiinhalt
- 5. Es genügt, den Hash-Wert zu verwenden, um einen Dateiinhalt zu prüfen?
- 6. Shell-Skript, um den Dateinamen von seinem Pfad zu finden
- 7. Befehlszeilenargument von Dateiinhalt mit Zitat
- 8. Dateiinhalt mit Laravel lesen
- 9. Algorithmus, um den Minimalwertpunkt einer Funktion zu finden
- 10. Wechsel von Dateiinhalt zu STDIN im Piped-Befehl? (Linux Shell)
- 11. Methode, um den "echten" Port meines UDP Sockets zu finden?
- 12. PHP-Weg, um den Temperaturpfad des Webservers zu finden?
- 13. Regex, um den kommentierten Code in XCode zu finden
- 14. Verwenden Sie awk, um den Durchschnitt einer Spalte zu finden
- 15. Selen-Webdriver verwenden, um den Etikettentext zu finden
- 16. Sicherungstupel, um Äquivalenzklassen zu finden
- 17. SQL, um den Unterschied zwischen zwei Zeilen zu finden
- 18. Dateiinhalt in Eigenschaft aufnehmen?
- 19. Perl-Code Dateiinhalt
- 20. SQL-Abfrage, um Benutzer für den monatlichen Jahrestag zu finden
- 21. MYSQL-Abfrage, um den Unterschied zwischen gepaarten Zeilen zu finden?
- 22. Ordner mit FolderId abrufen, um den übergeordneten Ordner zu finden
- 23. Generische Queue, Methode, um den Minimalwert zu finden
- 24. JS Dateiinhalt abrufen?
- 25. Dateiinhalt in DB speichern
- 26. Javascript erhalten Dateiinhalt Schleife
- 27. Kameltest - assertMockEndpointsSatisfied mit Dateiinhalt
- 28. Dateiinhalt in Make überprüfen
- 29. Berechnen Sie eine Spalte von Zeiten, um den Unterschied zu einer statischen Zeit zu finden
- 30. Wie liest man den Dateiinhalt auf einmal in eine Variable?
http://sourceforge.net/projects/mime-util/files/mime-util/mime-util-2.1.3/ – khachik
Ich glaube nicht, dass dies ein Duplikat zu der referenzierten Frage, weil der Autor explizit fragt Erkennung durch den Dateiinhalt, während die Lösungen für die andere Frage auf eine Datei (inklusive Dateiname) verweisen. – danielp
Was ist mit den Lösungen [hier] (http://www.rgagnon.com/javadetails/java-0487.html). Arbeiten sie nicht für dich? – javamonkey79