当前位置: 首页 > news >正文

[转]Spring 之MultipartFile转换File 并鉴别File Mine Type 类型

原文地址:Spring 之MultipartFile转换File 并鉴别File Mine Type 类型_spring mimetype-CSDN博客

常见 MIME 类型列表
扩展名 文档类型 MIME 类型
.aac AAC audio audio/aac
.abw AbiWord document application/x-abiword
.arc Archive document (multiple files embedded) application/x-freearc
.avi AVI: Audio Video Interleave video/x-msvideo
.azw Amazon Kindle eBook format application/vnd.amazon.ebook
.bin Any kind of binary data application/octet-stream
.bmp Windows OS/2 Bitmap Graphics image/bmp
.bz BZip archive application/x-bzip
.bz2 BZip2 archive application/x-bzip2
.csh C-Shell script application/x-csh
.css Cascading Style Sheets (CSS) text/css
.csv Comma-separated values (CSV) text/csv
.doc Microsoft Word application/msword
.docx Microsoft Word (OpenXML) application/vnd.openxmlformats-officedocument.wordprocessingml.document
.eot MS Embedded OpenType fonts application/vnd.ms-fontobject
.epub Electronic publication (EPUB) application/epub+zip
.gif Graphics Interchange Format (GIF) image/gif
.htm
.html HyperText Markup Language (HTML) text/html
.ico Icon format image/vnd.microsoft.icon
.ics iCalendar format text/calendar
.jar Java Archive (JAR) application/java-archive
.jpeg
.jpg JPEG images image/jpeg
.js JavaScript text/javascript
.json JSON format application/json
.jsonld JSON-LD format application/ld+json
.mid
.midi Musical Instrument Digital Interface (MIDI) audio/midi audio/x-midi
.mjs JavaScript module text/javascript
.mp3 MP3 audio audio/mpeg
.mpeg MPEG Video video/mpeg
.mpkg Apple Installer Package application/vnd.apple.installer+xml
.odp OpenDocument presentation document application/vnd.oasis.opendocument.presentation
.ods OpenDocument spreadsheet document application/vnd.oasis.opendocument.spreadsheet
.odt OpenDocument text document application/vnd.oasis.opendocument.text
.oga OGG audio audio/ogg
.ogv OGG video video/ogg
.ogx OGG application/ogg
.otf OpenType font font/otf
.png Portable Network Graphics image/png
.pdf Adobe Portable Document Format (PDF) application/pdf
.ppt Microsoft PowerPoint application/vnd.ms-powerpoint
.pptx Microsoft PowerPoint (OpenXML) application/vnd.openxmlformats-officedocument.presentationml.presentation
.rar RAR archive application/x-rar-compressed
.rtf Rich Text Format (RTF) application/rtf
.sh Bourne shell script application/x-sh
.svg Scalable Vector Graphics (SVG) image/svg+xml
.swf Small web format (SWF) or Adobe Flash document application/x-shockwave-flash
.tar Tape Archive (TAR) application/x-tar
.tif
.tiff Tagged Image File Format (TIFF) image/tiff
.ttf TrueType Font font/ttf
.txt Text, (generally ASCII or ISO 8859-n) text/plain
.vsd Microsoft Visio application/vnd.visio
.wav Waveform Audio Format audio/wav
.weba WEBM audio audio/webm
.webm WEBM video video/webm
.webp WEBP image image/webp
.woff Web Open Font Format (WOFF) font/woff
.woff2 Web Open Font Format (WOFF) font/woff2
.xhtml XHTML application/xhtml+xml
.xls Microsoft Excel application/vnd.ms-excel
.xlsx Microsoft Excel (OpenXML) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml XML application/xml 代码对普通用户来说不可读 (RFC 3023, section 3)
text/xml 代码对普通用户来说可读 (RFC 3023, section 3)
.xul XUL application/vnd.mozilla.xul+xml
.zip ZIP archive application/zip
.3gp 3GPP audio/video container video/3gpp
audio/3gpp(若不含视频)
.3g2 3GPP2 audio/video container video/3gpp2
audio/3gpp2(若不含视频)
.7z 7-zip archive application/x-7z-compressed
检查文件类型,先为pom.xml 添加第三方依赖:jmimemagic 类包

<dependency>
<groupId>net.sf.jmimemagic</groupId>
<artifactId>jmimemagic</artifactId>
<version>0.1.5</version>
</dependency>
AI写代码
Spring 之MultipartFile转换File 并鉴别File Mine Type 类型 核心功能代码:

public boolean checkFileType(MultipartFile uploadFile){
//文件名
String fileName = uploadFile.getOriginalFilename();
// 获取文件后缀
String suffix=fileName.substring(fileName.lastIndexOf("."));
File picFile = null;
try {
// 用uuid作为文件名,防止生成的临时文件重复
picFile = File.createTempFile(String.valueOf(idGenerator.nextId()), suffix);
FileUtils.copyInputStreamToFile(uploadFile.getInputStream(),picFile);
// MultipartFile to File
MagicMatch match = Magic.getMagicMatch(picFile, false);
String mimeType = match.getMimeType();
// 白名单匹配
boolean anyMatch = Arrays.stream(mimeTypeWhiteList).anyMatch(x -> x.equalsIgnoreCase(mimeType));
return anyMatch;

} catch (IOException e) {
System.out.println("生成临时文件异常");
logger.error("error: {}", e.getMessage(), e);
} catch (Exception e) {
System.out.println("MIME-TYPE检查发生异常");
logger.error("error: {}", e.getMessage(), e);
} finally {
//程序结束时,删除临时文件
if (picFile.exists()){
picFile.delete();
}
}

return false;
}
AI写代码

改业务功能代码应用于文件上传功能:

/**
* 通用文件上传功能; 备注:文件大小<=30M,如果超出规定文件大小,建议采用大文件上传
*
* @param entity
* @return
*/
@RequestMapping(value = "/fileUpload", method = { RequestMethod.POST })
@ResponseBody
@ApiOperation(httpMethod = "POST", value = "文件上传(小于等于30M)")
public Result upload(ChunkInfoModel entity) {
if (logger.isDebugEnabled()) {
logger.debug(entity.toString());
}

boolean target = checkFileType(entity.getFile());
if(!target){
return Result.error("上传电子包文件格式不支持,本项目仅支持zip格式");
}

SysEfileInfo model = null;
try {
String folder = null;
if(StringUtils.isEmpty(entity.getFolder())){
folder = "default";
} else {
folder = entity.getFolder();
}
model = upload.smallAttachUpload(entity, folder);
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error("error: {}", e.getMessage(), e);
}
return Result.ok("文件上传成功").setDatas("model", model);
}
AI写代码


————————————————
版权声明:本文为CSDN博主「在奋斗的大道」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouzhiwengang/article/details/115160563

 

http://icebutterfly214.com/news/652/

相关文章:

  • [转]使用Nginx代理MinIO的完整指南:实现Web界面与API接口的远程访问
  • 2025年正规的复式楼家用电梯行业内知名厂家排行榜
  • 2025年靠谱的商场定制展柜厂家实力及用户口碑排行榜
  • 2025年优秀的冲压机械手最新TOP品牌厂家排行
  • 2025年热门的校园雕塑厂家推荐及选购参考榜
  • 2025年比较好的冷拔丝厂家推荐及采购参考
  • 乐聚教育机器人——功能演示视频
  • 读AI赋能12政府2
  • NWPU数据对比 - MKT
  • 25.10.27
  • go构建streamablehttp mcp服务
  • 对Grid绑定移动
  • 10.27博客
  • [Mirror] LinuxMirrors: Linux 一键换源项目
  • 20232309 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 衡量模型生成图片质量的指标
  • 【转载】‘tensorrt.tensorrt.Builder‘ object has no attribute ‘build_cuda_engine‘
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • WPF datagrid mvvm loaded 100M items,prism.wpf,prism.dryioc
  • sg.绑定键盘事件
  • 壁纸收集
  • Windows11安装miniconda
  • 10.27 CSP-S模拟40 改题记录
  • 详细介绍:Redis多租户资源隔离方案:基于ACL的权限控制与管理
  • 20251027周一日记
  • 学校协同云盘怎么选?2025年10大热门教育网盘推荐与对比
  • GPU集群之间的交互
  • CF1267G Game Relics
  • 102302115方朴第一次作业
  • 解题报告-梦熊 CSP-S2025 模拟赛T2