From fc7cbcaab40a451ba6bcb08b338eb4fce9177525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Sat, 23 Jun 2018 11:48:29 +0800 Subject: [PATCH] =?UTF-8?q?ES=20service=E6=B5=8B=E8=AF=95=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E4=B8=8A=E4=BC=A0Controller=E7=BC=96?= =?UTF-8?q?=E5=86=99=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/UploadController.java | 34 +++++++-- .../fileupload/dataobject/es/EsFileInfo.java | 2 +- .../fileupload/util/FormatFileSizeUtil.java | 25 +++++++ .../es/EsFileInfoRepositoryTest.java | 1 + .../service/impl/FileServiceImplTest.java | 74 +++++++++++++++++++ 5 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 src/main/java/top/fjy8018/fileupload/util/FormatFileSizeUtil.java create mode 100644 src/test/java/top/fjy8018/fileupload/service/impl/FileServiceImplTest.java diff --git a/src/main/java/top/fjy8018/fileupload/controller/UploadController.java b/src/main/java/top/fjy8018/fileupload/controller/UploadController.java index 0eecf33..2b149a8 100644 --- a/src/main/java/top/fjy8018/fileupload/controller/UploadController.java +++ b/src/main/java/top/fjy8018/fileupload/controller/UploadController.java @@ -2,15 +2,21 @@ package top.fjy8018.fileupload.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import top.fjy8018.fileupload.config.ServerPropertiesConfig; +import top.fjy8018.fileupload.constant.GlobalConstant; +import top.fjy8018.fileupload.dataobject.User; import top.fjy8018.fileupload.dataobject.es.EsFileInfo; import top.fjy8018.fileupload.service.FileService; +import top.fjy8018.fileupload.util.FormatFileSizeUtil; import top.fjy8018.fileupload.util.TimeUtil; import javax.servlet.http.HttpServletRequest; +import java.io.File; import java.util.Map; /** @@ -18,6 +24,7 @@ import java.util.Map; * @date 2018-06-23 09:16 */ @Controller +@RequestMapping("/upload") public class UploadController { @Autowired @@ -26,17 +33,34 @@ public class UploadController { @Autowired private ServerPropertiesConfig serverPropertiesConfig; + @PostMapping("/add") public String moreUpload(HttpServletRequest request, @RequestParam(value = "fileName") String fileName) { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; Map files = multipartHttpServletRequest.getFileMap(); - EsFileInfo fileInfo = new EsFileInfo(); - fileInfo.setFileName(fileName); - fileInfo.setFilePath(serverPropertiesConfig.getFilePath()); - /*fileInfo.setFileSize(); - fileInfo.setUserId();*/ + User user = (User)request.getSession().getAttribute(GlobalConstant.USER_SESSION_KEY); + EsFileInfo fileInfo = new EsFileInfo(); + + for (MultipartFile file : files.values()) { + String pathname = serverPropertiesConfig.getFilePath()+fileName; + File targetFile = new File(pathname); + + fileInfo.setFileName(fileName); + fileInfo.setFilePath(pathname); + fileInfo.setFileSize(FormatFileSizeUtil.GetFileSize(file.getSize())); + fileInfo.setUserId(user.getId()); + + // 写入ES + fileService.saveFile(fileInfo); + + try { + file.transferTo(targetFile); + } catch (Exception e) { + e.printStackTrace(); + } + } return null; } } diff --git a/src/main/java/top/fjy8018/fileupload/dataobject/es/EsFileInfo.java b/src/main/java/top/fjy8018/fileupload/dataobject/es/EsFileInfo.java index 9e5e68f..1739f4f 100644 --- a/src/main/java/top/fjy8018/fileupload/dataobject/es/EsFileInfo.java +++ b/src/main/java/top/fjy8018/fileupload/dataobject/es/EsFileInfo.java @@ -17,7 +17,7 @@ import java.util.concurrent.TimeUnit; * @date 2018-06-22 11:34 */ @Data -@Document(indexName = "fileInfo",type = "file") +@Document(indexName = "fileinfo",type = "file",shards = 3,replicas = 1) public class EsFileInfo implements Serializable { private static final long serialVersionUID = 3216398036847369019L; diff --git a/src/main/java/top/fjy8018/fileupload/util/FormatFileSizeUtil.java b/src/main/java/top/fjy8018/fileupload/util/FormatFileSizeUtil.java new file mode 100644 index 0000000..d232e3f --- /dev/null +++ b/src/main/java/top/fjy8018/fileupload/util/FormatFileSizeUtil.java @@ -0,0 +1,25 @@ +package top.fjy8018.fileupload.util; + +import java.text.DecimalFormat; + +public class FormatFileSizeUtil { + public static String GetFileSize(long sizes){ + String size = ""; + if(sizes!=0){ + long fileS = sizes; + DecimalFormat df = new DecimalFormat("#.00"); + if (fileS < 1024) { + size = df.format((double) fileS) + "BT"; + } else if (fileS < 1048576) { + size = df.format((double) fileS / 1024) + "KB"; + } else if (fileS < 1073741824) { + size = df.format((double) fileS / 1048576) + "MB"; + } else { + size = df.format((double) fileS / 1073741824) +"GB"; + } + }else{ + size = "非法!"; + } + return size; + } +} diff --git a/src/test/java/top/fjy8018/fileupload/repository/es/EsFileInfoRepositoryTest.java b/src/test/java/top/fjy8018/fileupload/repository/es/EsFileInfoRepositoryTest.java index 6e089a0..6ec37e1 100644 --- a/src/test/java/top/fjy8018/fileupload/repository/es/EsFileInfoRepositoryTest.java +++ b/src/test/java/top/fjy8018/fileupload/repository/es/EsFileInfoRepositoryTest.java @@ -24,6 +24,7 @@ public class EsFileInfoRepositoryTest extends EstestApplicationTests { /** * 测试数据 */ + @Test public void initRpositoryData(){ // 清除所有数据 repository.deleteAll(); diff --git a/src/test/java/top/fjy8018/fileupload/service/impl/FileServiceImplTest.java b/src/test/java/top/fjy8018/fileupload/service/impl/FileServiceImplTest.java new file mode 100644 index 0000000..5473bce --- /dev/null +++ b/src/test/java/top/fjy8018/fileupload/service/impl/FileServiceImplTest.java @@ -0,0 +1,74 @@ +package top.fjy8018.fileupload.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.junit.Assert; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Component; +import top.fjy8018.fileupload.EstestApplicationTests; +import top.fjy8018.fileupload.dataobject.es.EsFileInfo; +import top.fjy8018.fileupload.service.FileService; +import top.fjy8018.fileupload.util.KeyUtil; + +import javax.transaction.Transactional; + +import static org.junit.Assert.*; + +@Slf4j +@Component +public class FileServiceImplTest extends EstestApplicationTests { + + @Autowired + private FileService fileService; + + private PageRequest pageRequest = PageRequest.of(0,2); + + private static final String USER_ID = "1529723184401294213"; + + @Test + public void findByFileName() { + String fileName = "文件"; + Page res = fileService.findByFileName(pageRequest,fileName); + + log.info("【查询结果】{},数量{}",res.getContent(),res.getTotalElements()); + Assert.assertNotEquals(0,res.getTotalElements()); + } + + @Test + public void findDistinctByUserId() { + Page res = fileService.findDistinctByUserId(pageRequest,USER_ID); + + log.info("【查询结果】{},数量{}",res.getContent(),res.getTotalElements()); + Assert.assertNotEquals(0,res.getTotalElements()); + } + + @Test + public void saveFile() { + String fileName = "测试Service虚拟文件3"; + String fileSize = "31kb"; + String filePath = "/www/Service"; + EsFileInfo fileInfo = new EsFileInfo(USER_ID,fileName,fileSize,filePath); + log.info("【fileInfo】{}",fileInfo.toString()); + + EsFileInfo res = fileService.saveFile(fileInfo); + Assert.assertNotNull(res); + } + + @Test + + public void deleteFile() { + + } + + @Test + public void deleteById() { + //fileService.deleteById(); + } + + @Test + public void deleteAll() { + fileService.deleteAll(); + } +} \ No newline at end of file