From c96fbe6b0aeb413a17c429133ee6d81d138144b9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 09 六月 2026 10:58:52 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
index c2e7fa4..e5b77ee 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
@@ -3,6 +3,7 @@
import cn.hutool.core.lang.UUID;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.operation.vo.FileUploadVO;
import io.swagger.annotations.Api;
@@ -13,6 +14,9 @@
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
/**
* <p>
@@ -30,12 +34,37 @@
@Resource
private AliOssService aliOssService;
+ private static final Set<String> ALLOWED_IMAGE_TYPES = new HashSet<>(Arrays.asList(
+ ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp", ".svg"
+ ));
+
+ /**
+ * 校验文件名安全性和图片类型
+ */
+ private void validateFileName(String fileName) throws IOException {
+ if (fileName == null || fileName.trim().isEmpty()) {
+ throw new IOException("文件名不能为空");
+ }
+ if (fileName.contains("../") || fileName.contains("..\\")) {
+ throw new IOException("文件名包含非法字符");
+ }
+ String fileExtension = "";
+ int lastDotIndex = fileName.lastIndexOf(".");
+ if (lastDotIndex > 0) {
+ fileExtension = fileName.substring(lastDotIndex).toLowerCase();
+ }
+ if (!ALLOWED_IMAGE_TYPES.contains(fileExtension)) {
+ throw new ServiceException("只允许上传图片文件,支持的类型:jpg, jpeg, png, gif, bmp, webp, svg");
+ }
+ }
+
@PostMapping(value = "/base/v1/oss/upload",headers = "content-type=multipart/form-data")
@ApiOperation(value = "文件上传",tags = "文件上传")
public R<FileUploadVO> uploadOSS(@RequestParam("file") MultipartFile file) {
try {
// 上传并返回访问地址
String fileName = file.getOriginalFilename();
+ validateFileName(fileName);
String prefix = fileName.substring(fileName.lastIndexOf("."));
long fileSize = file.getSize();
String fileId = UUID.randomUUID().toString();
@@ -67,6 +96,7 @@
try {
// 上传并返回访问地址
String fileName = file.getOriginalFilename();
+ validateFileName(fileName);
String prefix = fileName.substring(fileName.lastIndexOf("."));
long fileSize = file.getSize();
String fileId = UUID.randomUUID().toString();
--
Gitblit v1.7.1