| | |
| | | package com.nq.service.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.google.common.collect.Lists; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.service.IFileUploadService; |
| | | import com.nq.utils.FTPUtil; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.time.LocalDate; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.UUID; |
| | | |
| | | import com.nq.utils.PropertiesUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private static final Logger log = LoggerFactory.getLogger(FileUploadServiceImpl.class); |
| | | |
| | | |
| | | @Override |
| | | public ServerResponse uploadFile(MultipartFile file) { |
| | | // 兼容c端组件上传原理 |
| | | String fileType = file.getOriginalFilename(); |
| | | if (StrUtil.isEmpty(fileType) || fileType.contains("blob")) { |
| | | fileType = "blob.png"; |
| | | } |
| | | |
| | | String fileName = file.getOriginalFilename(); |
| | | String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1); |
| | | |
| | | // 生成唯一的文件名 |
| | | String id = UUID.randomUUID().toString(); |
| | | String path = LocalDate.now() + "/" + id + "." + fileExtentionName; |
| | | |
| | | // 确保目标文件夹存在 |
| | | File targetDir = new File(PropertiesUtil.getProperty("loca.images.dir") + "/" + LocalDate.now()); |
| | | if (!targetDir.exists()) { |
| | | targetDir.mkdirs(); |
| | | } |
| | | |
| | | // 构建本地文件路径 |
| | | File localFile = new File(targetDir, id + "." + fileExtentionName); |
| | | |
| | | // 打印上传路径 |
| | | log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath()); |
| | | |
| | | try { |
| | | // 将文件保存到本地 |
| | | file.transferTo(localFile); |
| | | |
| | | } catch (IOException e) { |
| | | log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e); |
| | | } |
| | | // 返回相对路径 |
| | | return ServerResponse.createBySuccess(path); |
| | | } |
| | | |
| | | |
| | | // public ServerResponse uploadFile(MultipartFile file) { |
| | | // // 兼容c端组件上传原理 |
| | | // |
| | | // String fileName = file.getOriginalFilename(); |
| | | // |
| | | // |
| | | // String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1); |
| | | // |
| | | // |
| | | // String uploadFileName = UUID.randomUUID() + "." + fileExtentionName; |
| | | // |
| | | // String path = LocalDate.now() + "/" + uploadFileName; |
| | | // |
| | | // // 确保目标文件夹存在 |
| | | // File targetDir = new File(PropertiesUtil.getProperty("ftp.server.http.prefix") + "/" + LocalDate.now()); |
| | | // if (!targetDir.exists()) { |
| | | // targetDir.mkdirs(); |
| | | // } |
| | | // |
| | | // // 构建本地文件路径 |
| | | // File localFile = new File(targetDir, uploadFileName); |
| | | // |
| | | // // 打印上传路径 |
| | | // log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath()); |
| | | // |
| | | // try { |
| | | // // 将文件保存到本地 |
| | | // file.transferTo(localFile); |
| | | // |
| | | // // 如果需要自定义元数据,可以在此处理 |
| | | // Map<String, String> metadata = new HashMap<>(); |
| | | // metadata.put("x-amz-meta-myVal", "test"); // 如果需要元数据,可以放在文件名或其他地方 |
| | | // |
| | | // |
| | | // |
| | | // } catch (IOException e) { |
| | | // log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e); |
| | | // log.error("上传文件异常 , 错误信息 = {}", e); |
| | | // } |
| | | // // 返回相对路径 |
| | | // return ServerResponse.createBySuccess(path); |
| | | // } |
| | | |
| | | |
| | | |
| | | |
| | | public ServerResponse upload(MultipartFile file, String path) { |
| | | |
| | | String fileName = file.getOriginalFilename(); |