diff --git a/file-common/src/main/java/com/qiwenshare/common/config/PropertiesConfig.java b/file-common/src/main/java/com/qiwenshare/common/config/PropertiesConfig.java new file mode 100644 index 0000000..04d1982 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/config/PropertiesConfig.java @@ -0,0 +1,20 @@ +package com.qiwenshare.common.config; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +@Configuration +public class PropertiesConfig { + + @Resource + private Environment env; + + @PostConstruct + public void setProperties() { + PropertiesUtil.setEnvironment(env); + } + +} \ No newline at end of file diff --git a/file-common/src/main/java/com/qiwenshare/common/config/PropertiesUtil.java b/file-common/src/main/java/com/qiwenshare/common/config/PropertiesUtil.java new file mode 100644 index 0000000..5cae131 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/config/PropertiesUtil.java @@ -0,0 +1,18 @@ +package com.qiwenshare.common.config; + +import org.springframework.core.env.Environment; + +public class PropertiesUtil { + + private static Environment env = null; + + public static void setEnvironment(Environment env) { + PropertiesUtil.env = env; + } + + public static String getProperty(String key) { + return PropertiesUtil.env.getProperty(key); + } + + +} \ No newline at end of file diff --git a/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java b/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java index 5cbeaaf..b721e37 100644 --- a/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java +++ b/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java @@ -13,6 +13,7 @@ public class QiwenFileConfig { private String storageType; private String cacheMode; + private String localStoragePath; private AliyunConfig aliyun = new AliyunConfig(); diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java index daedc7c..2dec65c 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java @@ -1,9 +1,11 @@ package com.qiwenshare.common.operation.upload; +import com.qiwenshare.common.config.PropertiesUtil; import com.qiwenshare.common.domain.UploadFile; import com.qiwenshare.common.util.PathUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import javax.servlet.http.HttpServletRequest; import java.io.File; @@ -14,9 +16,11 @@ import java.security.SecureRandom; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.ResourceBundle; @Slf4j public abstract class Uploader { + public static final String ROOT_PATH = "upload"; public static final String FILE_SEPARATOR = "/"; @@ -31,10 +35,16 @@ public abstract class Uploader { * @return */ protected String getSaveFilePath() { + String path = ROOT_PATH; SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd"); path = FILE_SEPARATOR + path + FILE_SEPARATOR + formater.format(new Date()); - File dir = new File(PathUtil.getStaticPath() + path); + String localStoragePath = PropertiesUtil.getProperty("qiwen-file.local-storage-path"); + String staticPath = PathUtil.getStaticPath(); + if (StringUtils.isNotEmpty(localStoragePath)) { + staticPath = localStoragePath; + } + File dir = new File(staticPath + path); //LOG.error(PathUtil.getStaticPath() + path); if (!dir.exists()) { try { diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java b/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java index 3ef2ab9..f4f815d 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java @@ -9,17 +9,10 @@ import java.util.List; public interface IFileService extends IService { - -// void batchInsertFile(List fileBeanList, Long userId); - //void updateFile(FileBean fileBean); - void increaseFilePointCount(Long fileId); void decreaseFilePointCount(Long fileId); -// List selectFileListByPath(FileBean fileBean); - -// void deleteLocalFile(FileBean fileBean); diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java index 335b3c9..2f89b1d 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -164,10 +164,6 @@ public class FileController { } else { FileBean file = fileService.getById(userFile.getFileId()); if (file.getIsOSS() == 1 || file.getStorageType() == 1) { -// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); -// lambdaQueryWrapper.eq(UserFile::getUserFileId, renameFileDto.getUserFileId()); -// UserFile userFile = userFileService.getOne(lambdaQueryWrapper); - String fileUrl = file.getFileUrl(); String newFileUrl = fileUrl.replace(userFile.getFileName(), renameFileDto.getFileName()); @@ -297,12 +293,7 @@ public class FileController { } UserBean sessionUserBean = userService.getUserBeanByToken(token); -// String uuid = UUID.randomUUID().toString(); -// UserFile userFile = new UserFile(); -// userFile.setUserFileId(deleteFileDto.getUserFileId()); -//// userFile.setDeleteBatchNum(uuid); -// BeanUtil.copyProperties(deleteFileDto, userFile); userFileService.deleteUserFile(deleteFileDto.getUserFileId(), sessionUserBean.getUserId()); diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 1c5e573..7a7a3b1 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -1,18 +1,14 @@ package com.qiwenshare.file.controller; -import com.github.tobato.fastdfs.proto.storage.DownloadByteArray; -import com.github.tobato.fastdfs.service.FastFileStorageClient; -import com.qiwenshare.common.util.DateUtil; -import com.qiwenshare.common.operation.FileOperation; -import com.qiwenshare.common.util.FileUtil; +import com.qiwenshare.common.config.QiwenFileConfig; import com.qiwenshare.common.result.RestResult; -import com.qiwenshare.common.util.PathUtil; +import com.qiwenshare.common.util.DateUtil; +import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.file.anno.MyLog; import com.qiwenshare.file.api.IFileService; import com.qiwenshare.file.api.IFiletransferService; import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.file.api.IUserService; -import com.qiwenshare.common.config.QiwenFileConfig; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.StorageBean; import com.qiwenshare.file.domain.UserBean; @@ -26,10 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.*; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -53,8 +47,6 @@ public class FiletransferController { IUserService userService; @Resource IUserFileService userFileService; - @Autowired - private FastFileStorageClient fastFileStorageClient; public static final String CURRENT_MODULE = "文件传输接口"; @Operation(summary = "极速上传", description = "校验文件MD5判断文件是否存在,如果存在直接上传成功并返回skipUpload=true,如果不存在返回skipUpload=false需要再次调用该接口的POST方法", tags = {"filetransfer"}) @@ -142,68 +134,6 @@ public class FiletransferController { filetransferService.downloadFile(response, downloadFileDTO); } - private void localFileDownload(HttpServletResponse response, FileBean fileBean) { - BufferedInputStream bis = null; - byte[] buffer = new byte[1024]; - //设置文件路径 - File file = FileOperation.newFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); - if (file.exists()) { - - - FileInputStream fis = null; - - try { - fis = new FileInputStream(file); - bis = new BufferedInputStream(fis); - OutputStream os = response.getOutputStream(); - int i = bis.read(buffer); - while (i != -1) { - os.write(buffer, 0, i); - i = bis.read(buffer); - } - - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (bis != null) { - try { - bis.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - } - } - - - - - public void fastFDSDownload(HttpServletResponse response, FileBean fileBean){ - String group = fileBean.getFileUrl().substring(0, fileBean.getFileUrl().indexOf("/")); - String path = fileBean.getFileUrl().substring(fileBean.getFileUrl().indexOf("/") + 1); - DownloadByteArray downloadByteArray = new DownloadByteArray(); - byte[] bytes = fastFileStorageClient.downloadFile(group, path, downloadByteArray); - -// // 这里只是为了整合fastdfs,所以写死了文件格式。需要在上传的时候保存文件名。下载的时候使用对应的格式 -// response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("sb.xlsx", "UTF-8")); -// response.setCharacterEncoding("UTF-8"); - ServletOutputStream outputStream = null; - try { - outputStream = response.getOutputStream(); - outputStream.write(bytes); - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - outputStream.flush(); - outputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - @Operation(summary = "获取存储信息", description = "获取存储信息", tags = {"filetransfer"}) @RequestMapping(value = "/getstorage", method = RequestMethod.GET) diff --git a/file-web/src/main/java/com/qiwenshare/file/domain/UserFile.java b/file-web/src/main/java/com/qiwenshare/file/domain/UserFile.java index 7d47b41..a50b6ba 100644 --- a/file-web/src/main/java/com/qiwenshare/file/domain/UserFile.java +++ b/file-web/src/main/java/com/qiwenshare/file/domain/UserFile.java @@ -9,7 +9,7 @@ import javax.persistence.*; @Data @Table(name = "userfile", uniqueConstraints = { - @UniqueConstraint(name = "fileindex", columnNames = {"fileName", "filePath", "extendName", "deleteFlag"})}) + @UniqueConstraint(name = "fileindex", columnNames = {"fileName", "filePath", "extendName", "deleteFlag", "userId"})}) @Entity @TableName("userfile") public class UserFile { diff --git a/file-web/src/main/java/com/qiwenshare/file/service/FileService.java b/file-web/src/main/java/com/qiwenshare/file/service/FileService.java index 2f70c77..e6eb186 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/FileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/FileService.java @@ -1,14 +1,10 @@ package com.qiwenshare.file.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.github.tobato.fastdfs.service.FastFileStorageClient; import com.qiwenshare.file.api.IFileService; -import com.qiwenshare.common.config.QiwenFileConfig; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.mapper.FileMapper; -import com.qiwenshare.file.mapper.UserFileMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -19,32 +15,7 @@ public class FileService extends ServiceImpl implements IF @Resource FileMapper fileMapper; - @Resource - UserFileMapper userFileMapper; - @Resource - FiletransferService filetransferService; - @Resource - QiwenFileConfig qiwenFileConfig; - @Autowired - private FastFileStorageClient fastFileStorageClient; -// @Override -// public void batchInsertFile(List fileBeanList, Long userId) { -// StorageBean storageBean = filetransferService.selectStorageBean(new StorageBean(userId)); -// long fileSizeSum = 0; -// for (FileBean fileBean : fileBeanList) { -// if (fileBean.getIsDir() == 0) { -// fileSizeSum += fileBean.getFileSize(); -// } -// } -// fileMapper.batchInsertFile(fileBeanList); -// if (storageBean != null) { -// long updateFileSize = storageBean.getStorageSize() + fileSizeSum; -// -// storageBean.setStorageSize(updateFileSize); -// filetransferService.updateStorageBean(storageBean); -// } -// } @Override public void increaseFilePointCount(Long fileId) { @@ -60,52 +31,5 @@ public class FileService extends ServiceImpl implements IF fileMapper.updateById(fileBean); } -// @Override -// public void updateFile(FileBean fileBean) { -// fileBean.setUploadTime(DateUtil.getCurrentTime()); -// fileMapper.updateFile(fileBean); -// } - - - - -// @Override -// public List selectFileListByPath(FileBean fileBean) { -// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); -// lambdaQueryWrapper.eq(FileBean::getFilePath, fileBean.getFilePath()) -// .eq(FileBean::getUserId, fileBean.getUserId()) -// .orderByDesc(FileBean::getIsDir); -// return fileMapper.selectList(lambdaQueryWrapper); -// } -// @Override -// public void deleteLocalFile(FileBean fileBean) { -// log.info("删除本地文件:" + JSON.toJSONString(fileBean)); -// //删除服务器文件 -// if (fileBean.getFileUrl() != null && fileBean.getFileUrl().indexOf("upload") != -1){ -// if (fileBean.getIsOSS() != null && fileBean.getIsOSS() == 1) { -// AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), fileBean.getFileUrl().substring(1)); -// } else if (fileBean.getStorageType() == 0) { -// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); -// if (FileUtil.isImageFile(FileUtil.getFileExtendName(fileBean.getFileUrl()))) { -// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl().replace(fileBean.getTimeStampName(), fileBean.getTimeStampName() + "_min")); -// } -// } else if (fileBean.getStorageType() == 1) { -// AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), fileBean.getFileUrl().substring(1)); -// } else if (fileBean.getStorageType() == 2){ -// fastFileStorageClient.deleteFile(fileBean.getFileUrl()); -// -// } else { -// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); -// if (FileUtil.isImageFile(FileUtil.getFileExtendName(fileBean.getFileUrl()))) { -// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl().replace(fileBean.getTimeStampName(), fileBean.getTimeStampName() + "_min")); -// } -// } -// } -// } - - - - - } diff --git a/file-web/src/main/resources/config/application.properties b/file-web/src/main/resources/config/application.properties index 1f6ca74..691fa97 100644 --- a/file-web/src/main/resources/config/application.properties +++ b/file-web/src/main/resources/config/application.properties @@ -2,6 +2,9 @@ server.port=8080 #环境切换dev/prod spring.profiles.active=dev +qiwen-file.local-storage-path=D:/export + + eureka.client.register-with-eureka=false eureka.client.fetchRegistry=false #eureka.client.server.waitTimeInMsWhenSyncEmpty=0 @@ -35,7 +38,7 @@ spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.Ph #静态资源指定 spring.mvc.static-path-pattern=/** -spring.web.resources.static-locations=classpath:/static +spring.web.resources.static-locations=classpath:/static,file:${qiwen-file.local-storage-path} #上传下载 spring.servlet.multipart.max-file-size=2048MB