From 3c9cd07a5aee7d9c09fbd3baef104c6bfdfcd34b Mon Sep 17 00:00:00 2001 From: laptop_zup Date: Tue, 17 Dec 2024 03:41:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=B7=BB=E5=8A=A0=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=BB=98=E8=AE=A4=E5=A4=B4=E5=83=8F=E6=88=96=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zup --- .../yeqifu/sys/controller/FileController.java | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/yeqifu/sys/controller/FileController.java b/src/main/java/com/yeqifu/sys/controller/FileController.java index b15564c..ad0d16e 100644 --- a/src/main/java/com/yeqifu/sys/controller/FileController.java +++ b/src/main/java/com/yeqifu/sys/controller/FileController.java @@ -2,9 +2,12 @@ package com.yeqifu.sys.controller; import cn.hutool.core.date.DateUtil; import com.yeqifu.sys.common.AppFileUtils; +import com.yeqifu.sys.common.Constast; +import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.http.HttpStatus; @@ -28,8 +31,8 @@ public class FileController { /** * 图片上传 - * @param mf - * @return + * @param mf 上传的文件 + * @return 上传结果 */ @RequestMapping("uploadImage") public Map uploadImage(MultipartFile mf) { @@ -57,7 +60,7 @@ public class FileController { // 得到当前日期的字符串 String dirName = DateUtil.format(new Date(), "yyyy-MM-dd"); - // 构造文件夹 + // 构造文件夹路径 File dirFile = new File(AppFileUtils.UPLOAD_PATH, dirName); // 判断当前文件夹是否存在 @@ -87,14 +90,18 @@ public class FileController { return map; } - /** * 图片下载 * @param path 图片路径 - * return + * @return 文件内容或错误信息 */ @RequestMapping("showImageByPath") - public ResponseEntity downloadImage(String path) { + public ResponseEntity downloadImage(@RequestParam String path) { + // 如果是默认图片,直接返回 + if (path.equals(Constast.DEFAULT_IMG_USER) || path.equals(Constast.DEFAULT_IMG_GOODS)) { + return getDefaultImage(path); + } + // 规范路径,防止路径穿越 Path normalizedPath = Paths.get(AppFileUtils.UPLOAD_PATH, path).normalize(); @@ -102,7 +109,6 @@ public class FileController { if (!normalizedPath.startsWith(AppFileUtils.UPLOAD_PATH)) { return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); // 如果路径越界,返回403 Forbidden } - // 检查文件是否存在 File file = normalizedPath.toFile(); if (!file.exists() || !file.isFile()) { @@ -131,4 +137,21 @@ public class FileController { } } + /** + * 获取默认图片内容 + */ + private ResponseEntity getDefaultImage(String path) { + // 返回一个 302 重定向响应,重定向到默认图片的 URL + if (path.equals(Constast.DEFAULT_IMG_USER)) { + return ResponseEntity.status(HttpStatus.FOUND) + .header(HttpHeaders.LOCATION, Constast.DEFAULT_IMG_USER) // 图片的 URL 路径 + .build(); + } else if (path.equals(Constast.DEFAULT_IMG_GOODS)) { + return ResponseEntity.status(HttpStatus.FOUND) + .header(HttpHeaders.LOCATION, Constast.DEFAULT_IMG_GOODS) // 图片的 URL 路径 + .build(); + } + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } } +