From 6e12331e610bf723fb4566a3fbfb77b89eb5d6e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Fri, 9 Oct 2020 18:56:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/controller/CommonController.java | 45 ++++++++++++++++--- .../cn/celess/blog/enmu/ResponseEnum.java | 2 + .../java/cn/celess/blog/entity/Response.java | 12 ++--- 3 files changed, 47 insertions(+), 12 deletions(-) diff --git a/src/main/java/cn/celess/blog/controller/CommonController.java b/src/main/java/cn/celess/blog/controller/CommonController.java index bde8b32..7f7ce96 100644 --- a/src/main/java/cn/celess/blog/controller/CommonController.java +++ b/src/main/java/cn/celess/blog/controller/CommonController.java @@ -7,6 +7,7 @@ import cn.celess.blog.exception.MyException; import cn.celess.blog.service.CountService; import cn.celess.blog.service.QiniuService; import cn.celess.blog.util.HttpUtil; +import cn.celess.blog.util.RedisUserUtil; import cn.celess.blog.util.RedisUtil; import cn.celess.blog.util.VeriCodeUtil; import com.fasterxml.jackson.databind.JsonNode; @@ -27,9 +28,7 @@ import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; /** @@ -47,7 +46,7 @@ public class CommonController { @Autowired RedisUtil redisUtil; @Autowired - HttpServletRequest request; + RedisUserUtil redisUserUtil; @GetMapping("/counts") @@ -89,7 +88,7 @@ public class CommonController { * @throws IOException IOException */ @GetMapping(value = "/imgCode", produces = MediaType.IMAGE_PNG_VALUE) - public void getImg(HttpServletResponse response) throws IOException { + public void getImg(HttpServletRequest request, HttpServletResponse response) throws IOException { Object[] obj = VeriCodeUtil.createImage(); request.getSession().setAttribute("code", obj[0]); //将图片输出给浏览器 @@ -133,9 +132,10 @@ public class CommonController { * FIXME :: 单张图片多次上传的问题 * editor.md图片上传的接口 * FUCK !!! - * + * !! 推荐使用 fileUpload(/fileUpload) 接口 * @param file 文件 */ + @Deprecated @PostMapping("/imgUpload") public void upload(HttpServletRequest request, HttpServletResponse response, @RequestParam("editormd-image-file") MultipartFile file) throws IOException { Map map = new HashMap<>(); @@ -186,4 +186,37 @@ public class CommonController { JsonNode images = root.get("images").elements().next(); return Response.success("https://cn.bing.com" + images.get("url").asText()); } + + @PostMapping("/fileUpload") + public Response>> fileUpload(@RequestParam("file[]") MultipartFile[] files) throws IOException { + List> result = new ArrayList<>(); + String uploadTimesStr = redisUtil.get(redisUserUtil.get().getEmail() + "-fileUploadTimes"); + int uploadTimes = 0; + if (uploadTimesStr != null) { + uploadTimes = Integer.parseInt(uploadTimesStr); + } + if (uploadTimes == 10) { + throw new MyException(ResponseEnum.FAILURE.getCode(), "上传次数已达10次,请2小时后在上传"); + } + if (files.length == 0) { + throw new MyException(ResponseEnum.NO_FILE); + } + for (MultipartFile file : files) { + Map resp = new HashMap<>(4); + + String fileName = file.getOriginalFilename(); + assert fileName != null; + String mime = fileName.substring(fileName.lastIndexOf(".")); + String name = fileName.replace(mime, "").replaceAll(" ", ""); + QiniuResponse qiniuResponse = qiniuService.uploadFile(file.getInputStream(), "file_" + name + '_' + System.currentTimeMillis() + mime); + resp.put("originalFilename", fileName); + resp.put("success", qiniuResponse != null); + if (qiniuResponse != null) { + resp.put("host", "http://cdn.celess.cn/"); + resp.put("path", qiniuResponse.key); + } + result.add(resp); + } + return Response.success(result); + } } diff --git a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java index 919fa5f..54bea45 100644 --- a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java +++ b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java @@ -62,6 +62,8 @@ public enum ResponseEnum { APPLY_LINK_NO_ADD_THIS_SITE(7200, "暂未在您的网站中抓取到本站链接"), DATA_EXPIRED(7300, "数据过期"), CANNOT_GET_DATA(7400, "暂无法获取到数据"), + NO_FILE(7500, "未选择文件,请重新选择"), + //提交更新之前,没有获取数据/, DID_NOT_GET_THE_DATA(8020, "非法访问"), diff --git a/src/main/java/cn/celess/blog/entity/Response.java b/src/main/java/cn/celess/blog/entity/Response.java index 6f35606..eec624c 100644 --- a/src/main/java/cn/celess/blog/entity/Response.java +++ b/src/main/java/cn/celess/blog/entity/Response.java @@ -32,8 +32,8 @@ public class Response implements Serializable { * @param result 结果 * @return Response */ - public static Response success(Object result) { - return new Response(ResponseEnum.SUCCESS.getCode(), ResponseEnum.SUCCESS.getMsg(), result); + public static Response success(T result) { + return new Response(ResponseEnum.SUCCESS.getCode(), ResponseEnum.SUCCESS.getMsg(), result); } /** @@ -42,8 +42,8 @@ public class Response implements Serializable { * @param result 结果 * @return Response */ - public static Response failure(String result) { - return new Response(ResponseEnum.FAILURE.getCode(), ResponseEnum.FAILURE.getMsg(), result); + public static Response failure(String result) { + return new Response(ResponseEnum.FAILURE.getCode(), ResponseEnum.FAILURE.getMsg(), result); } /** @@ -53,8 +53,8 @@ public class Response implements Serializable { * @param result 结果 * @return Response */ - public static Response response(ResponseEnum r, String result) { - return new Response(r.getCode(), r.getMsg(), result); + public static Response response(ResponseEnum r, T result) { + return new Response(r.getCode(), r.getMsg(), result); } @SneakyThrows