Skip to content

Commit 36e6067

Browse files
committed
get mime from file ext
1 parent 0df7d62 commit 36e6067

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import jakarta.servlet.http.HttpServletRequest;
2323
import jakarta.servlet.http.HttpServletResponse;
2424
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
25+
import edu.harvard.iq.dataverse.util.FileUtil;
2526
import jakarta.ejb.EJB;
2627
import org.apache.commons.io.IOUtils;
2728
import org.apache.tika.Tika;
@@ -55,25 +56,22 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re
5556
String filePath = getFilePath(customFileType);
5657

5758
Path physicalPath = Paths.get(filePath);
59+
5860
FileInputStream inputStream = null;
5961
BufferedReader in = null;
6062
try {
6163
File fileIn = physicalPath.toFile();
6264
if (fileIn != null) {
6365
// Time the MIME type detection
6466
long startTime = System.currentTimeMillis();
65-
Tika tika = new Tika();
66-
try {
67-
String mimeType = tika.detect(fileIn);
68-
response.setContentType(mimeType);
69-
long endTime = System.currentTimeMillis();
70-
long duration = endTime - startTime;
71-
logger.info("MIME Type detection for " + filePath + " took " + duration + "ms. Detected type: " + mimeType);
72-
} catch (Exception e) {
73-
long endTime = System.currentTimeMillis();
74-
long duration = endTime - startTime;
75-
logger.info("Error getting MIME Type for " + filePath + " after " + duration + "ms : " + e.getMessage());
76-
}
67+
String filename = physicalPath.getFileName().toString();
68+
int dotIndex = filename.lastIndexOf('.');
69+
String ext = dotIndex >= 0 ? filename.substring(dotIndex) : "";
70+
String mimeType = FileUtil.lookupFileTypeByExtension(ext);
71+
response.setContentType(mimeType);
72+
long endTime = System.currentTimeMillis();
73+
long duration = endTime - startTime;
74+
logger.info("MIME Type detection for " + filePath + " took " + duration + "ms. Detected type: " + mimeType);
7775
inputStream = new FileInputStream(fileIn);
7876

7977
in = new BufferedReader(new InputStreamReader(inputStream));

src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ public static String determineFileTypeByNameAndExtension(final String fileName)
603603
return lookupFileTypeByExtension(fileName);
604604
}
605605

606-
private static String lookupFileTypeByExtension(final String fileName) {
606+
public static String lookupFileTypeByExtension(final String fileName) {
607607
final String mimetypesFileTypeMapResult = MIME_TYPE_MAP.getContentType(fileName);
608608
logger.fine("MimetypesFileTypeMap type by extension, for " + fileName + ": " + mimetypesFileTypeMapResult);
609609
if (mimetypesFileTypeMapResult == null) {

0 commit comments

Comments
 (0)