From 071b35f2d4d0ff1ca136bed9d6e16f787f4dee87 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Tue, 4 Feb 2025 16:09:21 +0100 Subject: [PATCH] wip(utils): mime type fix --- pom.xml | 6 ++++++ src/main/java/fr/titionfire/ffsaf/utils/Utils.java | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c5af523..170a9e4 100644 --- a/pom.xml +++ b/pom.xml @@ -139,6 +139,12 @@ io.quarkus quarkus-mailer + + + net.sf.jmimemagic + jmimemagic + 0.1.5 + diff --git a/src/main/java/fr/titionfire/ffsaf/utils/Utils.java b/src/main/java/fr/titionfire/ffsaf/utils/Utils.java index b1a700c..59728dc 100644 --- a/src/main/java/fr/titionfire/ffsaf/utils/Utils.java +++ b/src/main/java/fr/titionfire/ffsaf/utils/Utils.java @@ -5,6 +5,10 @@ import jakarta.ws.rs.core.HttpHeaders; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import jodd.net.MimeTypes; +import net.sf.jmimemagic.Magic; +import net.sf.jmimemagic.MagicException; +import net.sf.jmimemagic.MagicMatchNotFoundException; +import net.sf.jmimemagic.MagicParseException; import org.jboss.logging.Logger; import java.io.*; @@ -76,7 +80,12 @@ public class Utils { return "OK"; try (InputStream is = new BufferedInputStream(new ByteArrayInputStream(input))) { - String mimeType = URLConnection.guessContentTypeFromStream(is); + String mimeType; + try { + mimeType = Magic.getMagicMatch(input, false).getMimeType(); + } catch (MagicParseException | MagicMatchNotFoundException | MagicException e) { + mimeType = URLConnection.guessContentTypeFromStream(is); + } String[] detectedExtensions = MimeTypes.findExtensionsByMimeTypes(mimeType, false); if (detectedExtensions.length == 0) throw new IOException("Fail to detect file extension for MIME type " + mimeType);