【发布时间】:2018-11-07 18:03:29
【问题描述】:
我正在使用 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";
}
}
【问题讨论】:
-
你应该提供一些例子。
-
你可以检查代码,例如参考我的问题。谢谢
-
@OP:检查以下方法是否对您有帮助:1.
MultipartFileObject.getContentType(), 2.MimeUtil.getMimeTypes(File file) -
1.这在将可执行文件 .exe 更改为 json 时不起作用。返回的 mime 类型是 json。 2. 已经使用了一个未知的 mimetype 来响应一个 json 文件。你知道任何其他方法来获得文件的确切 mimetype 吗?
-
MediaType是另一种可能的部分比较。但是,您是否尝试过跟踪变量mimeTypes中的确切内容。调试并查看else部分比较。这可能会有所帮助。
标签: java spring-mvc file-upload mime-types