當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring 之MultipartFile转换File 并鉴别File Mine Type 类型
生活随笔
收集整理的這篇文章主要介紹了
Spring 之MultipartFile转换File 并鉴别File Mine Type 类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
常見 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 |
| 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>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 FileMagicMatch 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;}改業務功能代碼應用于文件上傳功能:
/*** 通用文件上傳功能; 備注:文件大小<=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 blocklogger.error("error: {}", e.getMessage(), e);}return Result.ok("文件上傳成功").setDatas("model", model);}?
總結
以上是生活随笔為你收集整理的Spring 之MultipartFile转换File 并鉴别File Mine Type 类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机怎么改鼠标标志,电脑鼠标图标怎么改
- 下一篇: gradle idea java ssm