feat(sys-file): 支持自定义文件名上传功能

- 在文件上传接口中增加fileName参数以支持自定义文件名
- 当未提供fileName时保持原有UUID生成逻辑
- 同步修改相关controller和feign接口的签名
- 完善相关方法的JavaDoc注释
This commit is contained in:
PIG AI committed 2025-06-23 16:16:44 +08:00
1 parent 8d0eb9c8fb
commit 155a303bec
4 files changed
+39 -24

No files matched your search

@@ -43,10 +43,11 @@ public interface RemoteFileService {
/**
* 内部上传文件接口
*
* @param file 要上传的文件
* @param file 要上传的文件
* @param fileName 文件名
* @return 上传结果
*/
@NoToken
@PostMapping(value = "/sys-file/inner/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
R innerUpload(@RequestPart("file") MultipartFile file);
R innerUpload(@RequestPart("file") MultipartFile file, @RequestParam String fileName);
}
@@ -109,22 +109,29 @@ public class SysFileController {
@PostMapping(value = "/upload")
public R upload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir,
@RequestParam(value = "groupId", required = false) Long groupId,
@RequestParam(value = "type", required = false) String type) {
return sysFileService.uploadFile(file, dir, groupId, type);
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "fileName", required = false) String fileName) {
return sysFileService.uploadFile(file, fileName, dir, groupId, type);
}
/**
* 内部文件上传接口
*
* @param file 上传的文件
* @param dir 文件存储目录
* @param groupId 文件分组ID
* @param type 文件类型
* @param fileName 自定义文件名
* @return 文件上传结果
*/
@Inner
@PostMapping(value = "/inner/upload")
public R innerUpload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir,
@RequestParam(value = "groupId", required = false) Long groupId,
@RequestParam(value = "type", required = false) String type) {
return sysFileService.uploadFile(file, dir, groupId, type);
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "fileName", required = false) String fileName) {
return sysFileService.uploadFile(file, fileName, dir, groupId, type);
}
@@ -38,13 +38,15 @@ public interface SysFileService extends IService<SysFile> {
/**
* 上传文件
* @param file 文件流
* @param dir 文件夹
* @param groupId 分组ID
* @param type 类型
* @return
*
* @param file 文件流
* @param fileName 文件名
* @param dir 存储目录
* @param groupId 文件分组ID
* @param type 文件类型
* @return 上传结果
*/
R uploadFile(MultipartFile file, String dir, Long groupId, String type);
R uploadFile(MultipartFile file, String fileName, String dir, Long groupId, String type);
/**
* 读取文件
@@ -54,9 +56,10 @@ public interface SysFileService extends IService<SysFile> {
void getFile(String fileName, HttpServletResponse response);
/**
* 删除文件
* @param id
* @return
* 根据文件ID删除文件
*
* @param id 文件ID
* @return 删除是否成功
*/
Boolean deleteFile(Long id);
@@ -77,15 +77,19 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
/**
* 上传文件
*
* @param file 文件流
* @param dir 文件夹
* @param groupId 分组ID
* @param type 类型
* @param file 文件流
* @param fileName
* @param dir 文件夹
* @param groupId 分组ID
* @param type 类型
* @return
*/
@Override
public R uploadFile(MultipartFile file, String dir, Long groupId, String type) {
String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
public R uploadFile(MultipartFile file, String fileName, String dir, Long groupId, String type) {
// 如果客户端没有传入文件名,则使用UUID生成一个唯一的文件名
if (StrUtil.isBlank(fileName)) {
fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
}
Map<String, String> resultMap = new HashMap<>(4);
resultMap.put("bucketName", properties.getBucketName());
resultMap.put("fileName", fileName);
@@ -132,10 +136,10 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
}
/**
* 删除文件
* 根据ID删除文件
*
* @param id
* @return
* @param id 文件ID
* @return 删除是否成功,文件不存在时返回false
*/
@Override
@SneakyThrows