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);