日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2024/1/1 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 之MultipartFile转换File 并鉴别File Mine Type 类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常見 MIME 類型列表

擴展名文檔類型MIME 類型
.aacAAC audioaudio/aac
.abwAbiWord?documentapplication/x-abiword
.arcArchive document (multiple files embedded)application/x-freearc
.aviAVI: Audio Video Interleavevideo/x-msvideo
.azwAmazon Kindle eBook formatapplication/vnd.amazon.ebook
.binAny kind of binary dataapplication/octet-stream
.bmpWindows OS/2 Bitmap Graphicsimage/bmp
.bzBZip archiveapplication/x-bzip
.bz2BZip2 archiveapplication/x-bzip2
.cshC-Shell scriptapplication/x-csh
.cssCascading Style Sheets (CSS)text/css
.csvComma-separated values (CSV)text/csv
.docMicrosoft Wordapplication/msword
.docxMicrosoft Word (OpenXML)application/vnd.openxmlformats-officedocument.wordprocessingml.document
.eotMS Embedded OpenType fontsapplication/vnd.ms-fontobject
.epubElectronic publication (EPUB)application/epub+zip
.gifGraphics Interchange Format (GIF)image/gif
.htm
.html
HyperText Markup Language (HTML)text/html
.icoIcon formatimage/vnd.microsoft.icon
.icsiCalendar formattext/calendar
.jarJava Archive (JAR)application/java-archive
.jpeg
.jpg
JPEG imagesimage/jpeg
.jsJavaScripttext/javascript
.jsonJSON formatapplication/json
.jsonldJSON-LD formatapplication/ld+json
.mid
.midi
Musical Instrument Digital Interface (MIDI)audio/midi?audio/x-midi
.mjsJavaScript moduletext/javascript
.mp3MP3 audioaudio/mpeg
.mpegMPEG Videovideo/mpeg
.mpkgApple Installer Packageapplication/vnd.apple.installer+xml
.odpOpenDocument presentation documentapplication/vnd.oasis.opendocument.presentation
.odsOpenDocument spreadsheet documentapplication/vnd.oasis.opendocument.spreadsheet
.odtOpenDocument text documentapplication/vnd.oasis.opendocument.text
.ogaOGG audioaudio/ogg
.ogvOGG videovideo/ogg
.ogxOGGapplication/ogg
.otfOpenType fontfont/otf
.pngPortable Network Graphicsimage/png
.pdfAdobe?Portable Document Format?(PDF)application/pdf
.pptMicrosoft PowerPointapplication/vnd.ms-powerpoint
.pptxMicrosoft PowerPoint (OpenXML)application/vnd.openxmlformats-officedocument.presentationml.presentation
.rarRAR archiveapplication/x-rar-compressed
.rtfRich Text Format (RTF)application/rtf
.shBourne shell scriptapplication/x-sh
.svgScalable Vector Graphics (SVG)image/svg+xml
.swfSmall web format?(SWF) or Adobe Flash documentapplication/x-shockwave-flash
.tarTape Archive (TAR)application/x-tar
.tif
.tiff
Tagged Image File Format (TIFF)image/tiff
.ttfTrueType Fontfont/ttf
.txtText, (generally ASCII or ISO 8859-n)text/plain
.vsdMicrosoft Visioapplication/vnd.visio
.wavWaveform Audio Formataudio/wav
.webaWEBM audioaudio/webm
.webmWEBM videovideo/webm
.webpWEBP imageimage/webp
.woffWeb Open Font Format (WOFF)font/woff
.woff2Web Open Font Format (WOFF)font/woff2
.xhtmlXHTMLapplication/xhtml+xml
.xlsMicrosoft Excelapplication/vnd.ms-excel
.xlsxMicrosoft Excel (OpenXML)application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xmlXMLapplication/xml?代碼對普通用戶來說不可讀 (RFC 3023, section 3)
text/xml?代碼對普通用戶來說可讀 (RFC 3023, section 3)
.xulXULapplication/vnd.mozilla.xul+xml
.zipZIP archiveapplication/zip
.3gp3GPP?audio/video containervideo/3gpp
audio/3gpp(若不含視頻)
.3g23GPP2?audio/video containervideo/3gpp2
audio/3gpp2(若不含視頻)
.7z7-zip?archiveapplication/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 类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。