package cn.iocoder.yudao.module.infra.controller.admin.file.vo.file;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import jakarta.validation.constraints.AssertTrue;
|
import jakarta.validation.constraints.NotNull;
|
import lombok.Data;
|
import org.springframework.web.multipart.MultipartFile;
|
|
@Schema(description = "管理后台 - 上传文件 Request VO")
|
@Data
|
public class FileUploadReqVO {
|
|
@Schema(description = "文件附件", requiredMode = Schema.RequiredMode.REQUIRED)
|
@NotNull(message = "文件附件不能为空")
|
private MultipartFile file;
|
|
@Schema(description = "文件目录", example = "XXX/YYY")
|
private String directory;
|
|
@AssertTrue(message = "文件目录不正确")
|
@JsonIgnore
|
public boolean isDirectoryValid() {
|
return isDirectoryValid(directory);
|
}
|
|
public static boolean isDirectoryValid(String directory) {
|
// 1. 不能包含 .. 防止目录穿越
|
// 2. 不能以 / 或 \ 开头,防止上传到根目录
|
return !StrUtil.contains(directory, "..")
|
&& !StrUtil.startWithAny(directory, "/", "\\");
|
}
|
|
}
|