fix(upms): 更新上传文件方法文档,增加路径校验说明

This commit is contained in:
PIGCLOUD committed 2026-08-03 08:28:06 +08:00
1 parent 0aaaee14fb
commit fe9ee4d1e6
1 file changed
+17 -9
@@ -77,14 +77,18 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
private final FileProperties properties;
/**
* 上传文件
* 上传文件到当前配置的存储桶,并写入文件管理记录。
* <p>
* {@code fileName} 为空时按 UUID 生成存储名;本地存储模式下会校验路径不得逃逸存储根目录。
* </p>
*
* @param file 文件流
* @param fileName
* @param dir 文件夹
* @param groupId 分组ID
* @param type 类型
* @return
* @param file 上传文件流,不可为 {@code null}
* @param fileName 目标存储文件名;为空时自动生成(无扩展名时不追加尾部点号)
* @param dir 相对目录,可为空表示桶根路径
* @param groupId 文件分组 ID,可为空
* @param type 业务文件类型标识,可为空
* @return 成功时 data 含 {@code bucketName}、{@code fileName}、{@code url};
* 路径非法返回失败({@code sys.file.path.invalid}),上传异常返回失败({@code sys.file.upload.failed})
*/
@Override
public R uploadFile(MultipartFile file, String fileName, String dir, Long groupId, String type) {
@@ -297,10 +301,14 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
/**
* 校验文件存储路径,确保文件始终位于配置的存储桶目录内。
* <p>
* 仅本地存储({@link FileType#LOCAL})生效;非本地类型直接返回。
* </p>
*
* @param bucketName 存储桶名称
* @param dir 相对目录
* @param fileName 文件名
* @param dir 相对目录,可为空
* @param fileName 文件名
* @throws IllegalArgumentException 本地 {@code basePath} 为空,或路径存在目录穿越时抛出
*/
private void validateStoragePath(String bucketName, String dir, String fileName) {
if (properties.getType() != FileType.LOCAL) {