diff --git a/src/main/java/com/youlai/boot/shared/file/service/impl/LocalFileService.java b/src/main/java/com/youlai/boot/shared/file/service/impl/LocalFileService.java index f6a217e4..46740dc4 100644 --- a/src/main/java/com/youlai/boot/shared/file/service/impl/LocalFileService.java +++ b/src/main/java/com/youlai/boot/shared/file/service/impl/LocalFileService.java @@ -1,5 +1,6 @@ package com.youlai.boot.shared.file.service.impl; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; @@ -7,6 +8,7 @@ import com.youlai.boot.shared.file.model.FileInfo; import com.youlai.boot.shared.file.service.FileService; import lombok.Data; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -23,40 +25,53 @@ import java.time.LocalDateTime; * @author Theo * @since 2024-12-09 17:11 */ +@Data +@Slf4j @Component @ConditionalOnProperty(value = "oss.type", havingValue = "local") @ConfigurationProperties(prefix = "oss.local") @RequiredArgsConstructor -@Data public class LocalFileService implements FileService { @Value("${oss.local.storage-path}") private String storagePath; + /** + * 上传文件方法 + * + * @param file 表单文件对象 + * @return 文件信息 + */ @Override public FileInfo uploadFile(MultipartFile file) { // 生成文件名(日期文件夹) String suffix = FileUtil.getSuffix(file.getOriginalFilename()); String uuid = IdUtil.simpleUUID(); - String folder = DateUtil.format(LocalDateTime.now(), "yyyyMMdd") + File.separator; - String fileName = uuid + "." + suffix; + String folder = DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN); + String fileName = uuid + "." + suffix; String filePrefix = storagePath.endsWith(File.separator) ? storagePath : storagePath + File.separator; // try-with-resource 语法糖自动释放流 try (InputStream inputStream = file.getInputStream()) { // 上传文件 - FileUtil.writeFromStream(inputStream, filePrefix +folder+ fileName); + FileUtil.writeFromStream(inputStream, filePrefix + folder + File.separator + fileName); } catch (Exception e) { - e.printStackTrace(); + log.error("文件上传失败", e); throw new RuntimeException("文件上传失败"); } // 获取文件访问路径,因为这里是本地存储,所以直接返回文件的相对路径,需要前端自行处理访问前缀 - String fileUrl = File.separator +folder+File.separator + fileName; + String fileUrl = File.separator + folder + File.separator + fileName; FileInfo fileInfo = new FileInfo(); fileInfo.setName(fileName); fileInfo.setUrl(fileUrl); return fileInfo; } + + /** + * 删除文件 + * @param filePath 文件完整URL + * @return 是否删除成功 + */ @Override public boolean deleteFile(String filePath) { //判断文件是否为空