通过后缀名和MIME-TYPE检查实现文件类型校验

更新时间:2023-06-16 06:40:07 阅读: 评论:0

通过后缀名和MIME-TYPE检查实现⽂件类型校验
前⾔
⽂件上传是⼀个在开发中很常见的需求场景,通常出于安全考虑,我们会对上传的⽂件进⾏类型校验,其中常见的有后缀名校验,mime-type校验话不多说,直接上代码
威力造句
1.⾸先定义允许上传的⽂件类型⽩名单
private static final String[] suffixWhiteList = {"PNG","JPEG","JPG","GIF"};
private static final String[] mimeTypeWhiteList = {"image/jpeg","image/gif","image/png"};
2.后缀名校验
笔记本加固态/**
* ⽂件后缀名校验
*
* @param fileName
*            ⽂件名称
* @return
*/促销督导
public static boolean suffixCheck(String fileName) {
if(fileName == null || "".equals(fileName)){
return fal;
}
//从最后⼀个点之后截取字符串
鱼油胶囊String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
//⽩名单匹配
boolean anyMatch = Arrays.stream(suffixWhiteList).anyMatch(x -> x.equalsIgnoreCa(suffix));
return anyMatch;
}
3.mime-type校验,因为需要获取⽂件的mimeType,我引⼊了第三⽅的jar包(其他同样功能的jar包都可以)
//MIME-TYPE⼯具包
compile("net.sf.jmimemagic:jmimemagic:0.1.3")
/**
* MIMETYPE校验
* @return
*/
public static boolean mimeTypeCheck(MultipartFile uploadFile){
if (uploadFile.isEmpty()){
return fal;
}
//⽂件名
String fileName = OriginalFilename();
// 获取⽂件后缀
String suffix=fileName.substring(fileName.lastIndexOf("."));
File picFile = null;
try {
// ⽤uuid作为⽂件名,防⽌⽣成的临时⽂件重复
picFile = Uuid(), suffix);
/
/ MultipartFile to File
MagicMatch match = MagicMatch(picFile, fal);
String mimeType = MimeType();手机连不上>作文初一
// ⽩名单匹配
boolean anyMatch = Arrays.stream(mimeTypeWhiteList).anyMatch(x -> x.equalsIgnoreCa(mimeType));
return anyMatch;
} catch (IOException e) {
<("⽣成临时⽂件异常",e);螃蟹煮几分钟
} catch (Exception  e) {文艺复兴时期
<("MIME-TYPE检查发⽣异常",e);
} finally {
//程序结束时,删除临时⽂件
if (ists()){
picFile.delete();
}
}
return fal;
}

本文发布于:2023-06-16 06:40:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/965958.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:校验   类型   出于
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图