diff --git a/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java b/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java index cd0534f4c77..658cd3f279c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java @@ -22,6 +22,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; +import edu.harvard.iq.dataverse.util.FileUtil; import jakarta.ejb.EJB; import org.apache.commons.io.IOUtils; import org.apache.tika.Tika; @@ -60,13 +61,11 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re try { File fileIn = physicalPath.toFile(); if (fileIn != null) { - Tika tika = new Tika(); - try { - String mimeType = tika.detect(fileIn); - response.setContentType(mimeType); - } catch (Exception e) { - logger.info("Error getting MIME Type for " + filePath + " : " + e.getMessage()); - } + String filename = physicalPath.getFileName().toString(); + int dotIndex = filename.lastIndexOf('.'); + String ext = dotIndex >= 0 ? filename.substring(dotIndex) : ""; + String mimeType = FileUtil.lookupFileTypeByExtension(ext); + response.setContentType(mimeType); inputStream = new FileInputStream(fileIn); in = new BufferedReader(new InputStreamReader(inputStream)); diff --git a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java index 38707f5fc7c..7502658444a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java @@ -598,7 +598,10 @@ public static String determineFileTypeByNameAndExtension(final String fileName) return lookupFileTypeByExtension(fileName); } - private static String lookupFileTypeByExtension(final String fileName) { + /** determineFileTypeByNameAndExtension should be used instead for any user supplied content. + * + */ + public static String lookupFileTypeByExtension(final String fileName) { final String mimetypesFileTypeMapResult = MIME_TYPE_MAP.getContentType(fileName); logger.fine("MimetypesFileTypeMap type by extension, for " + fileName + ": " + mimetypesFileTypeMapResult); if (mimetypesFileTypeMapResult == null) {