我正在使用mimeutil来检查文件的mimetype。 并且只允许csv和json文件。但是为json文件获取此mimetype “application / x-ipynb + json”mime类型无处可寻。如果还将一个exe文件重命名为json,出于安全原因不应该被允许,任何帮助将被理解为获取文件的确切mime类型。 请参考以下代码以供参考:
public static String verifyExtension(MultipartFile File){
String mimeType = null;
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.ExtensionMimeDetector");
//MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.OpendesktopMimeDetector");
MimeUtil.registerMimeDetector(System.getProperty("os.name").startsWith(
"Windows") ? "eu.medsea.mimeutil.detector.WindowsRegistryMimeDetector"
: "eu.medsea.mimeutil.detector.OpendesktopMimeDetector");
Collection<?> mimeTypes = null;
try {
mimeTypes = MimeUtil.getMimeTypes(File.getBytes());
if(mimeTypes.equals("application/vnd.ms-excel") || mimeTypes.equals("application/json")
|| mimeTypes.equals("application/octet-stream"))
{
System.out.println("File typ is csv or json");
mimeType = "success";
}else{
mimeType = "fail";
}
} catch (MimeException e1) {
System.out.println(e1.getMessage());
mimeType = "fail";
} catch (IOException e1) {
System.out.println(e1.getMessage());
mimeType = "fail";
}
}
答案 0 :(得分:0)
您的问题是java中的MIME类型检查是基于文件扩展名的。
要运行实际文件分析,请尝试Apache Tika Mime Magic Detection。
此外,您可以尝试以下方法之一: