liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
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>
@@ -24,33 +28,58 @@
 */
@Api(tags = "阿里云文件上传")
@RestController
@RequestMapping("/base/v1/oss")
@RequestMapping("")
public class OssController {
    @Resource
    private AliOssService aliOssService;
    @PostMapping(value = "/upload",headers = "content-type=multipart/form-data")
    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(value = "file") MultipartFile file) {
    public R<FileUploadVO> uploadOSS(@RequestParam("file") MultipartFile file) {
        try {
            // 上传并返回访问地址
//            String fileName = file.getOriginalFilename();
//            String prefix = fileName.substring(fileName.lastIndexOf("."));
//            long fileSize = file.getSize();
//            String fileId = UUID.randomUUID().toString();
//            //上传文件
//            aliOssService.uploadFile(file.getBytes(), fileId);
//            String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
//            FileUploadVO fileUploadVO = new FileUploadVO();
//            fileUploadVO.setId(fileId);
//            fileUploadVO.setName(fileName);
//            fileUploadVO.setUrl(downloadUrl);
            String fileName = file.getOriginalFilename();
            validateFileName(fileName);
            String prefix = fileName.substring(fileName.lastIndexOf("."));
            long fileSize = file.getSize();
            String fileId = UUID.randomUUID().toString();
            //上传文件
            aliOssService.uploadFile(file.getBytes(), fileId);
            String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
            FileUploadVO fileUploadVO = new FileUploadVO();
            fileUploadVO.setId(UUID.randomUUID().toString());
            fileUploadVO.setName("测试.jpg");
            fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png");
            fileUploadVO.setId(fileId);
            fileUploadVO.setName(fileName);
            fileUploadVO.setUrl(downloadUrl);
//            FileUploadVO fileUploadVO = new FileUploadVO();
//            fileUploadVO.setId(UUID.randomUUID().toString());
//            fileUploadVO.setName("测试.jpg");
//            fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png");
            return R.ok(fileUploadVO);
        } catch (Exception e) {
            System.err.println("上传文件失败"+e);
@@ -58,5 +87,67 @@
        }
    }
    @PostMapping(value = "/maintenance-app/base/v1/oss/upload",headers = "content-type=multipart/form-data")
    @ApiOperation(value = "文件上传",tags = "文件上传")
    public R<FileUploadVO> uploadOSS1(@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();
            //上传文件
            aliOssService.uploadFile(file.getBytes(), fileId);
            String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
            FileUploadVO fileUploadVO = new FileUploadVO();
            fileUploadVO.setId(fileId);
            fileUploadVO.setName(fileName);
            fileUploadVO.setUrl(downloadUrl);
//            FileUploadVO fileUploadVO = new FileUploadVO();
//            fileUploadVO.setId(UUID.randomUUID().toString());
//            fileUploadVO.setName("测试.jpg");
//            fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png");
            return R.ok(fileUploadVO);
        } catch (Exception e) {
            System.err.println("上传文件失败"+e);
            return R.fail(e.getMessage());
        }
    }
    @PostMapping(value = "/maintenance-app/base/v1/oss/getUploadOSSUrl")
    @ApiOperation(value = "获取文件上传地址",tags = "文件上传")
    public R<String> getUploadOSSUrl(@RequestParam("fileId") String fileId) {
        try {
            // 上传并返回访问地址
            String uploadUrl = aliOssService.getUploadUrl(fileId, true);
            return R.ok(uploadUrl);
        } catch (Exception e) {
            System.err.println("上传文件失败"+e);
            return R.fail(e.getMessage());
        }
    }
    @PostMapping(value = "/base/v1/oss/getUploadOSSUrl")
    @ApiOperation(value = "获取文件上传地址",tags = "文件上传")
    public R<String> getUploadOSSUrl1(@RequestParam("fileId") String fileId) {
        try {
            // 上传并返回访问地址
            String uploadUrl = aliOssService.getUploadUrl(fileId, true);
            return R.ok(uploadUrl);
        } catch (Exception e) {
            System.err.println("上传文件失败"+e);
            return R.fail(e.getMessage());
        }
    }
}