赞
踩
工具类都放一个configss包了,方便使用
CommonEnum
package com.qhzx.mad.backstage.configss; import lombok.Getter; import lombok.Setter; /** * @Description: * @Author: x * @Date : */ public enum CommonEnum { //成功 SUCCESS_RESPONSE(200, "成功"), //失败 FAILED_RESPONSE(400, "失败"); @Setter @Getter private Integer code; @Setter @Getter private String msg; CommonEnum(Integer code, String msg) { this.code = code; this.msg = msg; } }
DateUtils
package com.qhzx.mad.backstage.configss; import io.swagger.models.auth.In; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author: yc * @des: 时间工具类 * @date: 2021/7/5 14:28 */ public class DateUtils { //年月日格式 private static final String Y_M_D = "yyyy-MM-dd"; //年月日 时分秒格式 private static final String Y_M_D_H_M_S = "yyyy-MM-dd HH:mm:ss"; public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; /** * @author: yc * @des: 获取当前 年月日 时间字符串 * @date: 2021/7/5 14:29 */ public static String getCurrentYMDStr() { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D); return sdf.format(new Date()); } /** * @author: yc * @des: 获取当前 年月日-时分秒 时间字符串 * @date: 2021/7/5 14:34 */ public static String getCurrentYMDHMSStr() { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D_H_M_S); return sdf.format(new Date()); } /** * @author: yc * @des: 获取当前 年月日 date对象 * @date: 2021/7/5 14:38 */ public static Date getCurrentYMDDate() { try { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D); return sdf.parse(getCurrentYMDStr()); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * @author: yc * @des: 获取当前 年月日-时分秒 date对象 * @date: 2021/7/5 14:41 */ public static Date getCurrentYMDHMSDate() { try { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D_H_M_S); return sdf.parse(getCurrentYMDHMSStr()); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * @author: yc * @des: 根据某一时间字符串获取 年月日 date对象 * @date: 2021/7/5 14:45 */ public static Date getCurrentYMDDate(String ymdTime) { try { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D); return sdf.parse(ymdTime); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * @author: yc * @des: 根据某一时间获取 年月日-时分秒 date对象 * @date: 2021/7/5 14:46 */ public static Date getCurrentYMDHMSDate(String ymdHmsTime) { try { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D_H_M_S); return sdf.parse(ymdHmsTime); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * @author: yc * @des: 将date对象转换为 年月日字符串 * @date: 2021/7/5 15:36 */ public static String date2ymdStr(Date date) { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D); return null == date ? "" : sdf.format(date); } /** * @author: yc * @des: 将date对象转换为 年月日-时分秒 字符串 * @date: 2021/7/5 15:37 */ public static String date2ymdHmsStr(Date date) { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D_H_M_S); return null == date ? "" : sdf.format(date); } /** * @author: yc * @des: 将某一 年月日字符串时间 转换为 年月日时分秒字符串 * @date: 2021/7/5 15:54 */ public static String ymdStr2ymdHmsStr(String ymdTime) { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D_H_M_S); return null == ymdTime ? "" : sdf.format(getCurrentYMDDate(ymdTime)); } /** * @author: yc * @des: 将某一 年月日时分秒字符串 转换为 年月日字符串时间 * @date: 2021/7/5 15:58 */ public static String ymdHmsStr2ymdStr(String ymdHmsTime) { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D); return null == ymdHmsTime ? "" : sdf.format(getCurrentYMDHMSDate(ymdHmsTime)); } /** * @author: yc * @des: 时间移动 根据某一 年月日时间字符串(time) 及 移动天数(moveDays) 得到移动后的 年月日时间字符串 * moveNum > 0 -> 向后移 反之 -> 向前移 * moveType = "移动维度" -> * Calendar.SECOND = "秒" * Calendar.MINUTE = "分" * Calendar.HOUR_OF_DAY = "时" * Calendar.DATE = "日" * Calendar.WEEK_OF_MONTH = "周" * Calendar.MONTH = "月" * Calendar.YEAR = "年" * @date: 2021/7/5 14:48 */ public static String getMoveYMDStrByTime(Integer moveNum, Integer moveType, String ymdTime) { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D); Date date = null; try { date = sdf.parse(ymdTime); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(moveNum, moveType); date = calendar.getTime(); } catch (ParseException e) { e.printStackTrace(); } return sdf.format(date); } /** * @author: yc * @des: 时间移动 根据某一 年月日-时分秒时间字符串(time) 及 移动天数(moveDays) 得到移动后的 年月日-时分秒时间字符串 * moveNum > 0 -> 向后移 反之 -> 向前移 * moveType = "移动维度" -> * Calendar.SECOND = "秒" * Calendar.MINUTE = "分" * Calendar.HOUR_OF_DAY = "时" * Calendar.DATE = "日" * Calendar.WEEK_OF_MONTH = "周" * Calendar.MONTH = "月" * Calendar.YEAR = "年" * @date: 2021/7/5 14:48 */ public static String getMoveYMDHMSStrByTime(Integer moveNum, Integer moveType, String ymdHmsTime) { SimpleDateFormat sdf = new SimpleDateFormat(Y_M_D_H_M_S); Date date = null; try { date = sdf.parse(ymdHmsTime); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(moveType, moveNum); date = calendar.getTime(); } catch (ParseException e) { e.printStackTrace(); } return sdf.format(date); } /** * @author: yc * @des: 获取最近24小时List * @date: 2021/7/5 15:39 */ public static List<String> getLocal24Hour() { int mod = 24; String time = null; List<String> local24HourList = new ArrayList<>(); String currentHour = getCurrentYMDHMSStr().substring(11, 13); for (int i = 1; i <= mod; i++) { time = String.valueOf((Integer.parseInt(currentHour) + i) % mod); String hourTime = Integer.parseInt(time) < 10 ? "0" + time + ":00" : time + ":00"; String realDate = ymdHmsStr2ymdStr(getMoveYMDHMSStrByTime(i - mod, Calendar.HOUR_OF_DAY, getCurrentYMDHMSStr())) + " " + hourTime + ":00"; local24HourList.add(realDate + "_" + hourTime); } return local24HourList; } /** * @author: yc * @des: 获取两个 年月日字符串时间 之间的 list 年月日事件对象 * @date: 2021/7/5 16:01 */ public static List<String> getYMDListBetweenStartEndTime(String startTime, String endTime) { List<String> ymdList = new ArrayList<>(); try { String currentTime = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar st = Calendar.getInstance(); Calendar ed = Calendar.getInstance(); st.setTime(sdf.parse(startTime)); ed.setTime(sdf.parse(endTime)); //按照天维度来拉取数据 for (st.setTime(sdf.parse(startTime)); !st.after(ed); st.add(Calendar.DAY_OF_YEAR, 1)) { currentTime = sdf.format(st.getTime()); ymdList.add(currentTime); System.out.println(currentTime); } return ymdList; } catch (ParseException e) { e.printStackTrace(); } return null; } /** * */ /** * @author: yc * @des: 获取最近12个月 * @date: 2021/7/5 16:03 */ public static List<String> getLast12Months() { List<String> last12MonthList = new ArrayList<>(); Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1); cal.set(Calendar.DATE, 1); for (int i = 0; i < 12; i++) { cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); last12MonthList.add(cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1 < 10 ? "0" + (cal.get(Calendar.MONTH) + 1) : String.valueOf(cal.get(Calendar.MONTH) + 1))); } return last12MonthList; } /** * @author: yc * @des: 转换unix时间格式 * @date: 2021/7/28 16:49 */ public static String getTimestampDate(String timestamp) { String str; SimpleDateFormat unix_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); str = unix_time.format(new Date(Long.valueOf(timestamp + "000"))); return str; } /** * @author: yc * @des: 判断一个时间 是否在一个时间区间内 * @date: 2021/8/23 9:24 */ public static boolean isBetween(Date current, Date startTime, Date endTime) { if (current.getTime() == startTime.getTime() || current.getTime() == endTime.getTime()) { return true; } Calendar date = Calendar.getInstance(); date.setTime(current); Calendar begin = Calendar.getInstance(); begin.setTime(startTime); Calendar end = Calendar.getInstance(); end.setTime(endTime); if (date.after(begin) && date.before(end)) { return true; } else { return false; } } /** * @author: yc * @des: 判断 年月日 日期 在哪个季度 * @date: 2021/7/9 11:16 */ public static Integer getQuarterByYMD(String ymdTime) { Integer currentMonth = Integer.parseInt(ymdTime.substring(5, 7)); if (currentMonth >= 1 && currentMonth <= 3) { return 1; } else if (currentMonth >= 4 && currentMonth <= 6) { return 2; } else if (currentMonth >= 7 && currentMonth <= 9) { return 3; } else { return 4; } } public static final String dateTimeNow() { return dateTimeNow(YYYYMMDDHHMMSS); } public static final String dateTimeNow(final String format) { return parseDateToStr(format, new Date()); } public static final String parseDateToStr(final String format, final Date date) { return new SimpleDateFormat(format).format(date); } /** // * @author: yc // * @des: 获取最近N个季度 // * @date: 2022/3/8 14:00 // */ // public static List<String> getLocalQuarter(Integer n,String sort){ // List<String> quarterList = new ArrayList<>(); // String currentYMD = getCurrentYMDStr(); // //当前季度 // Integer currentQuarter = getQuarterByYMD(currentYMD); // //当前季度的最后一个年月日 如 2021年第二季度的最后一个月为 2021-06-01 // String maxYMD = currentYMD.substring(0,4) + "-" + (currentQuarter * 3 < 10 ? "0" + currentQuarter * 3 : currentQuarter * 3) + "-01"; // // 顺序 // ActionUtils.doIfTrueOrNot("asc".equals(sort),() -> { // for(int i = n- 1; i >= 0 ;i--){ // quarterList.add(getMoveYMDStrByTime(-i * 3 * 30,Calendar.getInstance().DATE,maxYMD).substring(0,7)); // } // }, () -> { // for(int i = 0; i <= n-1; i++){ // quarterList.add(getMoveYMDStrByTime(-i * 3 * 30,Calendar.getInstance().DATE,maxYMD).substring(0,7)); // } // }); // return quarterList; // } }
FileUploadUtils
package com.xiaoq.store.util; import com.xiaoq.store.config.ProjectConfig; import org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.nio.file.Paths; import java.util.Objects; /** * 文件上传工具类 * * @author ruoyi */ public class FileUploadUtils { /** * 默认大小 50M */ public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024; /** * 默认的文件名最大长度 100 */ public static final int DEFAULT_FILE_NAME_LENGTH = 100; /** * 根据文件路径上传 * * @param baseDir 相对应用的基目录 * @param file 上传的文件 * @return 文件名称 * @throws IOException */ public static final String upload(String baseDir, MultipartFile file) throws IOException { try { return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); } catch (Exception e) { throw new IOException(e.getMessage(), e); } } /** * 文件上传 * * @param baseDir 相对应用的基目录 * @param file 上传的文件 * @param allowedExtension 上传文件类型 * @return 返回上传成功的文件名 * @throws FileSizeLimitExceededException 如果超出最大大小 * @throws IOException 比如读写文件出错时 */ public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension) throws IOException { String fileName = extractFilename(file); String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); file.transferTo(Paths.get(absPath)); return getPathFileName(baseDir, fileName); } /** * 编码文件名 */ public static final String extractFilename(MultipartFile file) { return "2022/06/22" + Seq.getId(Seq.uploadSeqType) + getExtension(file); } public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException { File desc = new File(uploadDir + File.separator + fileName); if (!desc.exists()) { if (!desc.getParentFile().exists()) { desc.getParentFile().mkdirs(); } } return desc; } public static final String getPathFileName(String uploadDir, String fileName) throws IOException { int dirLastIndex = ProjectConfig.getProfile().length() + 1; String currentDir = uploadDir.substring(dirLastIndex); return ProjectConfig.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; } /** * 获取文件名的后缀 * * @param file 表单文件 * @return 后缀名 */ public static final String getExtension(MultipartFile file) { String extension = file.getOriginalFilename(); if (StringUtils.isEmpty(extension)) { extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType())); } return extension; } }
package com.qhzx.util; import java.io.*; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; /** * 文件处理工具类 * * @author ruoyi */ public class FileUtils { public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; /** * 百分号编码工具方法 * * @param s 需要百分号编码的字符串 * @return 百分号编码后的字符串 */ public static String percentEncode(String s) throws UnsupportedEncodingException { String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); return encode.replaceAll("\\+", "%20"); } /** * 获取图像后缀 * * @param photoByte 图像数据 * @return 后缀名 */ public static String getFileExtendName(byte[] photoByte) { String strFileExtendName = "jpg"; if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) { strFileExtendName = "gif"; } else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) { strFileExtendName = "jpg"; } else if ((photoByte[0] == 66) && (photoByte[1] == 77)) { strFileExtendName = "bmp"; } else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) { strFileExtendName = "png"; } return strFileExtendName; } /** * 获取文件名称 /profile/upload/2022/04/16/ruoyi.png -- ruoyi.png * * @param fileName 路径名称 * @return 没有文件路径的名称 */ public static String getName(String fileName) { if (fileName == null) { return null; } int lastUnixPos = fileName.lastIndexOf('/'); int lastWindowsPos = fileName.lastIndexOf('\\'); int index = Math.max(lastUnixPos, lastWindowsPos); return fileName.substring(index + 1); } }
MimeTypeUtils
package com.qhzx.mad.backstage.configss; /** * 媒体类型工具类 * * @author ruoyi */ 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 ""; } } }
ProjectConfig
package com.qhzx.mad.backstage.configss; public class ProjectConfig { /** * 上传路径 */ private static final String profile = "/home/statics"; //private static final String profile = "/www/wwwroot/27.124.20.74/images"; /** * 资源映射路径 前缀 */ //public static final String RESOURCE_PREFIX = "/profile"; public static final String RESOURCE_PREFIX = ""; public static String getProfile() { return profile; } /** * 获取上传路径 */ public static String getUploadPath() { return profile + "/upload"; } }
Result
package com.qhzx.mad.backstage.configss; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.*; import lombok.experimental.Accessors; import java.io.Serializable; import static com.qhzx.mad.backstage.configss.CommonEnum.FAILED_RESPONSE; import static com.qhzx.mad.backstage.configss.CommonEnum.SUCCESS_RESPONSE; /** * @Description:响应结果集 * @Author: x * @Date : */ @ToString @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @ApiModel(description = "响应信息主体") @Data public class Result<T> implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "返回标记:成功标记=200,失败标记=400") private int code; @ApiModelProperty(value = "返回信息") private String msg; @ApiModelProperty(value = "数据") private T data; /** * 成功 */ public static <T> Result<T> succeed() { return restResult(null, SUCCESS_RESPONSE.getCode(), null); } public static <T> Result<T> succeed(T data) { return restResult(data, SUCCESS_RESPONSE.getCode(), null); } public static <T> Result<T> succeed(T data, String msg) { return restResult(data, SUCCESS_RESPONSE.getCode(), msg); } public static <T> Result<T> succeed(String msg) { return restResult(null, SUCCESS_RESPONSE.getCode(), msg); } /** * 响应返回结果 * * @param rows 影响行数 * @return 操作结果 */ public static Result toAjax(int rows) { return rows > 0 ? succeed() : fail(FAILED_RESPONSE.getCode(), "修改失败!请检查参数"); } /** * 失败 */ public static <T> Result<T> fail(int code, String msg) { return restResult(null, code, msg); } /** * 失败 */ public static <T> Result<T> fail(String msg) { return restResult(null, FAILED_RESPONSE.getCode(), msg); } private static <T> Result<T> restResult(T data, int code, String msg) { Result<T> apiResult = new Result<>(); apiResult.setCode(code); apiResult.setData(data); apiResult.setMsg(msg); return apiResult; } public Result(CommonEnum commonEnum, T data) { this.code = commonEnum.getCode(); this.msg = commonEnum.getMsg(); this.data = data; } public Result(CommonEnum commonEnum) { this.code = commonEnum.getCode(); this.msg = commonEnum.getMsg(); } public Result<T> setData(T data) { this.data = data; return this; } }
Seq
package com.qhzx.mad.backstage.configss; import java.util.concurrent.atomic.AtomicInteger; /** * @author ruoyi 序列生成类 */ public class Seq { // 通用序列类型 public static final String commSeqType = "COMMON"; // 上传序列类型 public static final String uploadSeqType = "UPLOAD"; // 通用接口序列数 private static AtomicInteger commSeq = new AtomicInteger(1); // 上传接口序列数 private static AtomicInteger uploadSeq = new AtomicInteger(1); // 机器标识 private static String machineCode = "A"; /** * 获取通用序列号 * * @return 序列值 */ public static String getId() { return getId(commSeqType); } /** * 默认16位序列号 yyMMddHHmmss + 一位机器标识 + 3长度循环递增字符串 * * @return 序列值 */ public static String getId(String type) { AtomicInteger atomicInt = commSeq; if (uploadSeqType.equals(type)) { atomicInt = uploadSeq; } return getId(atomicInt, 3); } /** * 通用接口序列号 yyMMddHHmmss + 一位机器标识 + length长度循环递增字符串 * * @param atomicInt 序列数 * @param length 数值长度 * @return 序列值 */ public static String getId(AtomicInteger atomicInt, int length) { String result = DateUtils.dateTimeNow(); result += machineCode; result += getSeq(atomicInt, length); return result; } /** * 序列循环递增字符串[1, 10 的 (length)幂次方), 用0左补齐length位数 * * @return 序列值 */ private synchronized static String getSeq(AtomicInteger atomicInt, int length) { // 先取值再+1 int value = atomicInt.getAndIncrement(); // 如果更新后值>=10 的 (length)幂次方则重置为1 int maxSeq = (int) Math.pow(10, length); if (atomicInt.get() >= maxSeq) { atomicInt.set(1); } // 转字符串,用0左补齐 return padl(value, length); } /** * 数字左边补齐0,使之达到指定长度。注意,如果数字转换为字符串后,长度大于size,则只保留 最后size个字符。 * * @param num 数字对象 * @param size 字符串指定长度 * @return 返回数字的字符串格式,该字符串为指定长度。 */ public static final String padl(final Number num, final int size) { return padl(num.toString(), size, '0'); } /** * 字符串左补齐。如果原始字符串s长度大于size,则只保留最后size个字符。 * * @param s 原始字符串 * @param size 字符串指定长度 * @param c 用于补齐的字符 * @return 返回指定长度的字符串,由原字符串左补齐或截取得到。 */ public static final String padl(final String s, final int size, final char c) { final StringBuilder sb = new StringBuilder(size); if (s != null) { final int len = s.length(); if (s.length() <= size) { for (int i = size - len; i > 0; i--) { sb.append(c); } sb.append(s); } else { return s.substring(len - size, len); } } else { for (int i = size; i > 0; i--) { sb.append(c); } } return sb.toString(); } }
CommonController
package com.qhzx.mad.backstage.controller; import com.qhzx.mad.backstage.configss.FileUploadUtils; import com.qhzx.mad.backstage.configss.FileUtils; import com.qhzx.mad.backstage.configss.ProjectConfig; import com.qhzx.mad.backstage.configss.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.apache.tomcat.util.buf.StringUtils; import java.util.*; /** * 通用请求处理 * * @author ruoyi */ @Api(tags = "上传api") @RestController @CrossOrigin @RequestMapping("/common") public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); /** * 通用上传请求(单个) */ @ApiOperation("通用上传请求") @PostMapping("/upload") public Result uploadFile(MultipartFile file) { try { // 上传文件路径 String filePath = ProjectConfig.getUploadPath(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); Map<String, Object> ajax = new HashMap<>(); ajax.put("fileName", fileName); ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return Result.succeed(ajax); } catch (Exception e) { e.printStackTrace(); return Result.fail(e.getMessage()); } } private static final char FILE_DELIMETER = ','; /** * 通用上传请求(多个) */ @PostMapping("/uploads") public Result<Map<String, Object>> uploadFiles(List<MultipartFile> files) { try { // 上传文件路径 String filePath = ProjectConfig.getUploadPath(); List<String> fileNames = new ArrayList<>(); List<String> newFileNames = new ArrayList<>(); List<String> originalFilenames = new ArrayList<>(); for (MultipartFile file : files) { // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); fileNames.add(fileName); newFileNames.add(FileUtils.getName(fileName)); originalFilenames.add(file.getOriginalFilename()); } Map<String, Object> ajax = new HashMap<>(); ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); return Result.succeed(ajax); } catch (Exception e) { return Result.fail(e.getMessage()); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。