Skip to content

Commit 68a8999

Browse files
authored
Merge pull request #11780 from QualitativeDataRepository/IQSS/11778-speedup_custom_file_retrieval
IQSS/11778 speedup custom file retrieval
2 parents 44847ec + 4f6966a commit 68a8999

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

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

Lines changed: 6 additions & 7 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;
@@ -60,13 +61,11 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re
6061
try {
6162
File fileIn = physicalPath.toFile();
6263
if (fileIn != null) {
63-
Tika tika = new Tika();
64-
try {
65-
String mimeType = tika.detect(fileIn);
66-
response.setContentType(mimeType);
67-
} catch (Exception e) {
68-
logger.info("Error getting MIME Type for " + filePath + " : " + e.getMessage());
69-
}
64+
String filename = physicalPath.getFileName().toString();
65+
int dotIndex = filename.lastIndexOf('.');
66+
String ext = dotIndex >= 0 ? filename.substring(dotIndex) : "";
67+
String mimeType = FileUtil.lookupFileTypeByExtension(ext);
68+
response.setContentType(mimeType);
7069
inputStream = new FileInputStream(fileIn);
7170

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

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,10 @@ public static String determineFileTypeByNameAndExtension(final String fileName)
598598
return lookupFileTypeByExtension(fileName);
599599
}
600600

601-
private static String lookupFileTypeByExtension(final String fileName) {
601+
/** determineFileTypeByNameAndExtension should be used instead for any user supplied content.
602+
*
603+
*/
604+
public static String lookupFileTypeByExtension(final String fileName) {
602605
final String mimetypesFileTypeMapResult = MIME_TYPE_MAP.getContentType(fileName);
603606
logger.fine("MimetypesFileTypeMap type by extension, for " + fileName + ": " + mimetypesFileTypeMapResult);
604607
if (mimetypesFileTypeMapResult == null) {

0 commit comments

Comments
 (0)