日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot實現單文件與多文件上傳

瀏覽:26日期:2023-03-09 16:54:17
目錄一、公共文件存儲代碼1.FileUploadUtils.java2.FileUtils.java3.MimeTypeUtils.java4.FileException.java5.FileNameLengthLimitExceededException.java6.FileSizeLimitExceededException.java7.InvalidExtensionException.java二、單文件上傳代碼三、多文件上傳代碼一、公共文件存儲代碼1.FileUploadUtils.java

package com.springcloud.blog.admin.util.file;/** * @description: 文件上傳工具類 * @author: youcong * @time: 2020/9/28 11:34 */import com.springcloud.blog.admin.exception.file.FileNameLengthLimitExceededException;import com.springcloud.blog.admin.exception.file.FileSizeLimitExceededException;import com.springcloud.blog.admin.exception.file.InvalidExtensionException;import com.springcloud.blog.admin.util.DateUtils;import com.springcloud.blog.admin.util.IdUtils;import com.springcloud.blog.admin.util.StringUtils;import org.apache.commons.fileupload.FileUploadBase;import org.apache.commons.io.FilenameUtils;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOException;public class FileUploadUtils { /** * 默認大小 50M */ public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024; /** * 默認的文件名最大長度 100 */ public static final int DEFAULT_FILE_NAME_LENGTH = 100; /** * 默認上傳的地址 */ private static String defaultBaseDir = 'D://test//'; /** * 資源映射路徑 前綴 */ public static String resource_prefix = 'D://test//'; public static void setDefaultBaseDir(String defaultBaseDir) {FileUploadUtils.defaultBaseDir = defaultBaseDir; } public static String getDefaultBaseDir() {return defaultBaseDir; } /** * 以默認配置進行文件上傳 * * @param file 上傳的文件 * @return 文件名稱 * @throws Exception */ public static final String upload(MultipartFile file) throws IOException {try { return upload(getDefaultBaseDir(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);} catch (Exception e) { throw new IOException(e.getMessage(), e);} } /** * 文件上傳 * * @param baseDir 相對應用的基目錄 * @param file 上傳的文件 * @param allowedExtension 上傳文件類型 * @return 返回上傳成功的文件名 * @throws FileSizeLimitExceededException 如果超出最大大小 * @throws FileNameLengthLimitExceededException 文件名太長 * @throws IOException 比如讀寫文件出錯時 * @throws InvalidExtensionException 文件校驗異常 */ public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension) throws FileUploadBase.FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException, InvalidExtensionException {int fileNamelength = file.getOriginalFilename().length();if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) { throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);}assertAllowed(file, allowedExtension);String fileName = extractFilename(file);File desc = getAbsoluteFile(baseDir, fileName);file.transferTo(desc);String pathFileName = getPathFileName(baseDir, fileName);return pathFileName; } /** * 編碼文件名 */ public static final String extractFilename(MultipartFile file) {String fileName = file.getOriginalFilename();String extension = getExtension(file);fileName = DateUtils.datePath() + '/' + IdUtils.fastUUID() + '.' + extension;return fileName; } private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {File desc = new File(uploadDir + File.separator + fileName);if (!desc.getParentFile().exists()) { desc.getParentFile().mkdirs();}if (!desc.exists()) { desc.createNewFile();}return desc; } private static final String getPathFileName(String uploadDir, String fileName) throws IOException {int dirLastIndex = defaultBaseDir.length() + 1;String currentDir = StringUtils.substring(uploadDir, dirLastIndex);String pathFileName = resource_prefix + '/' + currentDir + '/' + fileName;return pathFileName; } /** * 文件大小校驗 * * @param file 上傳的文件 * @return * @throws FileSizeLimitExceededException 如果超出最大大小 * @throws InvalidExtensionException */ public static final void assertAllowed(MultipartFile file, String[] allowedExtension) throws FileSizeLimitExceededException, InvalidExtensionException {long size = file.getSize();if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE) { throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);}String fileName = file.getOriginalFilename();String extension = getExtension(file);if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) { if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) {throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,fileName); } else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) {throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,fileName); } else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) {throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,fileName); } else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) {throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,fileName); } else {throw new InvalidExtensionException(allowedExtension, extension, fileName); }} } /** * 判斷MIME類型是否是允許的MIME類型 * * @param extension * @param allowedExtension * @return */ public static final boolean isAllowedExtension(String extension, String[] allowedExtension) {for (String str : allowedExtension) { if (str.equalsIgnoreCase(extension)) {return true; }}return false; } /** * 獲取文件名的后綴 * * @param file 表單文件 * @return 后綴名 */ public static final String getExtension(MultipartFile file) {String extension = FilenameUtils.getExtension(file.getOriginalFilename());if (StringUtils.isEmpty(extension)) { extension = MimeTypeUtils.getExtension(file.getContentType());}return extension; }}2.FileUtils.java

package com.springcloud.blog.admin.util.file;import javax.servlet.http.HttpServletRequest;import java.io.*;import java.net.URLEncoder;/** * 文件處理工具類 * * @author youcong */public class FileUtils extends org.apache.commons.io.FileUtils { public static String FILENAME_PATTERN = '[a-zA-Z0-9_-|.u4e00-u9fa5]+'; /** * 輸出指定文件的byte數組 * * @param filePath 文件路徑 * @param os 輸出流 * @return */ public static void writeBytes(String filePath, OutputStream os) throws IOException {FileInputStream fis = null;try { File file = new File(filePath); if (!file.exists()) {throw new FileNotFoundException(filePath); } fis = new FileInputStream(file); byte[] b = new byte[1024]; int length; while ((length = fis.read(b)) > 0) {os.write(b, 0, length); }} catch (IOException e) { throw e;} finally { if (os != null) {try { os.close();} catch (IOException e1) { e1.printStackTrace();} } if (fis != null) {try { fis.close();} catch (IOException e1) { e1.printStackTrace();} }} } /** * 刪除文件 * * @param filePath 文件 * @return */ public static boolean deleteFile(String filePath) {boolean flag = false;File file = new File(filePath);// 路徑為文件且不為空則進行刪除if (file.isFile() && file.exists()) { file.delete(); flag = true;}return flag; } /** * 文件名稱驗證 * * @param filename 文件名稱 * @return true 正常 false 非法 */ public static boolean isValidFilename(String filename) {return filename.matches(FILENAME_PATTERN); } /** * 下載文件名重新編碼 * * @param request 請求對象 * @param fileName 文件名 * @return 編碼后的文件名 */ public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException {final String agent = request.getHeader('USER-AGENT');String filename = fileName;if (agent.contains('MSIE')) { // IE瀏覽器 filename = URLEncoder.encode(filename, 'utf-8'); filename = filename.replace('+', ' ');} else if (agent.contains('Firefox')) { // 火狐瀏覽器 filename = new String(fileName.getBytes(), 'ISO8859-1');} else if (agent.contains('Chrome')) { // google瀏覽器 filename = URLEncoder.encode(filename, 'utf-8');} else { // 其它瀏覽器 filename = URLEncoder.encode(filename, 'utf-8');}return filename; }}3.MimeTypeUtils.java

package com.springcloud.blog.admin.util.file;/** * @description: * @author: youcong * @time: 2020/9/28 11:37 */public class MimeTypeUtils { public static final String IMAGE_PNG = 'image/png'; public static final String IMAGE_JPG = 'image/jpg'; public static final String IMAGE_JPEG = 'image/jpeg'; public static final String IMAGE_BMP = 'image/bmp'; public static final String IMAGE_GIF = 'image/gif'; public static final String[] IMAGE_EXTENSION = {'bmp', 'gif', 'jpg', 'jpeg', 'png'}; public static final String[] FLASH_EXTENSION = {'swf', 'flv'}; public static final String[] MEDIA_EXTENSION = {'swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'}; public static final String[] VIDEO_EXTENSION = {'mp4', 'avi', 'rmvb'}; public static final String[] DEFAULT_ALLOWED_EXTENSION = { // 圖片 'bmp', 'gif', 'jpg', 'jpeg', 'png', // word excel powerpoint 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'html', 'htm', 'txt', // 壓縮文件 'rar', 'zip', 'gz', 'bz2', // 視頻格式 'mp4', 'avi', 'rmvb', // pdf 'pdf'}; public static String getExtension(String prefix) {switch (prefix) { case IMAGE_PNG:return 'png'; case IMAGE_JPG:return 'jpg'; case IMAGE_JPEG:return 'jpeg'; case IMAGE_BMP:return 'bmp'; case IMAGE_GIF:return 'gif'; default:return '';} }}4.FileException.java

package com.springcloud.blog.admin.exception.file;import com.springcloud.blog.admin.exception.BaseException;/** * @description: 文件信息異常類 * @author: youcong * @time: 2020/9/28 11:41 */public class FileException extends BaseException { private static final long serialVersionUID = 1L; public FileException(String code, Object[] args) {super('file', code, args, null); }}5.FileNameLengthLimitExceededException.java

package com.springcloud.blog.admin.exception.file;/** * @description:文件名稱超長限制異常類 * @author: youcong * @time: 2020/9/28 11:41 */public class FileNameLengthLimitExceededException extends FileException { private static final long serialVersionUID = 1L; public FileNameLengthLimitExceededException(int defaultFileNameLength) {super('upload.filename.exceed.length', new Object[]{defaultFileNameLength}); }}6.FileSizeLimitExceededException.java

package com.springcloud.blog.admin.exception.file;/** * @description: 文件名大小限制異常類 * @author: youcong * @time: 2020/9/28 11:42 */public class FileSizeLimitExceededException extends FileException { private static final long serialVersionUID = 1L; public FileSizeLimitExceededException(long defaultMaxSize) {super('upload.exceed.maxSize', new Object[]{defaultMaxSize}); }}7.InvalidExtensionException.java

package com.springcloud.blog.admin.exception.file;/** * @description: 文件上傳錯誤異常類 * @author: youcong * @time: 2020/9/28 11:42 */import org.apache.commons.fileupload.FileUploadException;import java.util.Arrays;public class InvalidExtensionException extends FileUploadException { private static final long serialVersionUID = 1L; private String[] allowedExtension; private String extension; private String filename; public InvalidExtensionException(String[] allowedExtension, String extension, String filename) {super('filename : [' + filename + '], extension : [' + extension + '], allowed extension : [' + Arrays.toString(allowedExtension) + ']');this.allowedExtension = allowedExtension;this.extension = extension;this.filename = filename; } public String[] getAllowedExtension() {return allowedExtension; } public String getExtension() {return extension; } public String getFilename() {return filename; } public static class InvalidImageExtensionException extends InvalidExtensionException {private static final long serialVersionUID = 1L;public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename);} } public static class InvalidFlashExtensionException extends InvalidExtensionException {private static final long serialVersionUID = 1L;public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename);} } public static class InvalidMediaExtensionException extends InvalidExtensionException {private static final long serialVersionUID = 1L;public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename);} } public static class InvalidVideoExtensionException extends InvalidExtensionException {private static final long serialVersionUID = 1L;public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename);} }}

8.BaseException.java

package com.springcloud.blog.admin.exception;/** * 基礎異常 * * @author youcong */public class BaseException extends RuntimeException { private static final long serialVersionUID = 1L; /** * 所屬模塊 */ private String module; /** * 錯誤碼 */ private String code; /** * 錯誤碼對應的參數 */ private Object[] args; /** * 錯誤消息 */ private String defaultMessage; public BaseException(String module, String code, Object[] args, String defaultMessage) {this.module = module;this.code = code;this.args = args;this.defaultMessage = defaultMessage; } public BaseException(String module, String code, Object[] args) {this(module, code, args, null); } public BaseException(String module, String defaultMessage) {this(module, null, null, defaultMessage); } public BaseException(String code, Object[] args) {this(null, code, args, null); } public BaseException(String defaultMessage) {this(null, null, null, defaultMessage); } public String getModule() {return module; } public String getCode() {return code; } public Object[] getArgs() {return args; } public String getDefaultMessage() {return defaultMessage; }}二、單文件上傳代碼

@PostMapping('/post/uploadFile')@ApiOperation('文章上傳特色圖片')public ResponseBaseDTO<String> uploadFile(@RequestParam('file') MultipartFile file) { logger.info('/post/uploadFile'); try {String fileUrl = FileUploadUtils.upload(file);if (fileUrl != null) { return ResponseBaseDTO.createSuccResp(fileUrl);}return ResponseBaseDTO.createFailResp(fileUrl); } catch (Exception e) {logger.error('/post/uploadFile', e);return ResponseBaseDTO.createFailResp(e.getMessage()); }}三、多文件上傳代碼

@PostMapping('/batchImportsUsers')@ApiOperation('批量導入用戶數據小時')public ResponseBaseDTO<String> batchImportsUsers(MultipartFile[] uploadFiles) { if (uploadFiles.length > 0) {for (int i = 0; i < uploadFiles.length; i++) { try {importUserExcelData(uploadFiles[i]); } catch (Exception e) {e.printStackTrace(); }}return ResponseBaseDTO.createSuccResp(); } return ResponseBaseDTO.createFailResp(e.getMessage());}

以上就是SpringBoot實現單文件與多文件上傳的詳細內容,更多關于SpringBoot文件上傳的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
av亚洲一区二区三区| 少妇久久久久| 欧美成人精品| 精品国内亚洲2022精品成人| 日韩国产91| 欧美一区=区| 在线一区电影| 五月天久久久| 天堂资源在线亚洲| 国产精品玖玖玖在线资源| 蜜桃视频第一区免费观看| 伊人久久亚洲热| 亚洲福利国产| 999久久久亚洲| 免费亚洲婷婷| 国产日韩一区二区三区在线| 91精品国产自产精品男人的天堂| 视频一区二区中文字幕| 麻豆精品视频在线观看视频| 欧美日韩99| 国产欧美丝祙| 国产精品欧美在线观看| 国产美女精品视频免费播放软件| 亚洲一二三区视频| 无码日韩精品一区二区免费| 亚洲伊人精品酒店| 亚洲欧美久久精品| 亚洲另类视频| 国产亚洲精品美女久久久久久久久久| 亚欧洲精品视频在线观看| 视频一区国产视频| 亚洲精品影视| 国产亚洲电影| 国产一区二区精品福利地址| 日韩一区欧美| 九九久久婷婷| 亚洲男女自偷自拍| 亚洲午夜国产成人| 国产乱论精品| 国产一区二区精品福利地址| 一区二区三区四区日本视频| 国产精品久久观看| 免费人成在线不卡| 亚洲免费观看高清完整版在线观| 日韩精品一二区| 亚洲精品成人一区| 欧美国产视频| 91精品久久久久久久久久不卡| 99日韩精品| 日韩精品久久理论片| 国产精品亚洲四区在线观看| 国产一区二区三区探花| 99精品在线| 另类亚洲自拍| 国产精品美女午夜爽爽| 水蜜桃精品av一区二区| 日本美女一区| 日韩午夜av| 欧美天堂在线| 日韩1区2区| 午夜在线视频一区二区区别| 国产精品美女在线观看直播| 国产精品一区二区精品视频观看| 国产网站在线| 男人的天堂久久精品| 国产欧美一区| 99久久夜色精品国产亚洲狼 | 免费看的黄色欧美网站| 日韩欧美在线精品| 久久精品九色| 久久国产日本精品| 男女性色大片免费观看一区二区| 国产欧美日韩精品一区二区免费 | 久久精品国内一区二区三区水蜜桃| 亚洲欧美日本视频在线观看| 日韩成人av影视| 国内一区二区三区| 野花国产精品入口| 日韩福利视频导航| 精品国产一区二区三区av片| 日韩视频免费| 国产精品男女| 激情国产在线| 伊人国产精品| 国产不卡精品| 欧美日韩亚洲一区三区| 欧美69视频| 日韩国产一区二区三区| 久久亚洲黄色| 国产精品sm| 国产欧美一区| 日韩区欧美区| 影音先锋久久精品| 中国女人久久久| 日韩成人高清| 欧美日韩国产观看视频| 久久精品理论片| 麻豆国产欧美一区二区三区| 91午夜精品| 日日夜夜免费精品| 蜜桃伊人久久| 欧美女激情福利| 欧美性感美女一区二区| 色在线中文字幕| 国产在线看片免费视频在线观看| 久久精品国产精品亚洲毛片| 国产欧美日韩在线一区二区 | 久久av一区| 99成人超碰| 成人免费电影网址| a天堂资源在线| 岛国av在线播放| 黄色aa久久| 秋霞国产精品| 亚洲成人二区| 久久久久久美女精品| 色88888久久久久久影院| 日本不卡免费高清视频在线| 国产精品久久观看| 日韩大片免费观看| 精品欧美一区二区三区在线观看| 欧美www视频在线观看| 久久精品欧洲| 免费一级欧美在线观看视频| 欧美激情麻豆| 国内不卡的一区二区三区中文字幕| 欧美aa在线视频| 美女视频网站久久| 成人在线视频区| 成人看片网站| 欧美另类专区| 亚洲欧洲日韩| 国产日韩免费| 精品精品99| 精品免费av在线| 99亚洲视频| 日韩精品免费一区二区夜夜嗨| 国产精品天天看天天狠| 欧美视频二区| 国产精品va| 日韩欧美二区| 欧美日韩激情| 亚洲日本国产| 欧美国产免费| 午夜av成人| 亚洲一区二区三区久久久| 91免费精品国偷自产在线在线| 国产精品一区亚洲| 成人三级高清视频在线看| 亚洲va在线| 亚洲精品第一| 国产一区丝袜| 亚洲精品一区二区在线看| 在线观看亚洲精品福利片| 国产欧美精品| 国产精选在线| 国产亚洲综合精品| 国产视频网站一区二区三区| 91日韩在线| 性欧美长视频| 国产精品亚洲人成在99www | 久久久久久色 | 国产日韩欧美一区二区三区 | 国产亚洲精品久久久久婷婷瑜伽| 天堂va欧美ⅴa亚洲va一国产| 麻豆一区二区在线| 亚洲高清毛片| 日本色综合中文字幕| 精品久久国产一区| 在线一区免费观看| 国产精品久久| 九九色在线视频| 综合亚洲自拍| 成人在线视频免费看| 亚洲免费成人| 国产精品玖玖玖在线资源| 久久影视一区| 精品美女视频| 热久久国产精品| 成人三级高清视频在线看| 三级欧美在线一区| 国产美女高潮在线观看| 亚洲另类视频| av资源亚洲| 青青伊人久久| 老牛影视精品| 天堂va在线高清一区| 在线天堂中文资源最新版| 国产精品美女在线观看直播| 亚洲va中文在线播放免费| 亚洲免费毛片| 国产一区二区三区四区大秀| 成人在线视频区| 欧美/亚洲一区| 国产精品亚洲成在人线| 久久久久国产| 国产精品丝袜在线播放| 在线成人直播| 精品久久99| 日韩av一区二区三区|