From 3417cf014a65765e02696c1d121ce58b2b4a8aed Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 08 四月 2025 15:55:36 +0800 Subject: [PATCH] 修改pom.xml --- src/main/java/com/se/simu/controller/FilesUploadController.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 113 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/se/simu/controller/FilesUploadController.java b/src/main/java/com/se/simu/controller/FilesUploadController.java index 7245253..be4aa87 100644 --- a/src/main/java/com/se/simu/controller/FilesUploadController.java +++ b/src/main/java/com/se/simu/controller/FilesUploadController.java @@ -1,5 +1,8 @@ package com.se.simu.controller; +import com.se.simu.domain.vo.R; +import com.se.simu.utils.FileUtil; +import com.se.simu.utils.ZipUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -15,6 +18,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -25,7 +32,7 @@ @CrossOrigin(origins = "*") @RestController @RequestMapping("/v1/files") -public class FilesUploadController { +public class FilesUploadController extends BaseController { @Value("${simu-app.filePath}") @@ -41,6 +48,111 @@ @ApiOperation("1-涓婁紶鍗曚釜鏂囦欢") + @PostMapping("/upload") + public R<Object> upload(@RequestParam("file") MultipartFile file) throws IOException { + if (file.isEmpty()) { + return success("鏂囦欢涓嶈兘涓虹┖"); + } + // 鑾峰彇褰撳墠骞存湀鏃� + String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); + String targetDir = Paths.get(uploadedFolder, date).toString(); + log.info("鐩爣鐩綍: {}", targetDir); + createDirectoriesIfNotExists(targetDir); + try { + // 鑾峰彇褰撳墠鏃跺垎绉� + String time = LocalTime.now().format(DateTimeFormatter.ofPattern("HHmmss")); + // 鏂囦欢鍦板潃鍏ㄧО + Path filePath = Paths.get(targetDir, time + "_" + file.getOriginalFilename()); + // 鏂囦欢鍚� + file.transferTo(filePath); + return success(targetDir + "\\" + time + "_" + file.getOriginalFilename(), "鏂囦欢涓婁紶鎴愬姛"); + } catch (IOException e) { + log.error("鏂囦欢涓婁紶澶辫触", e); + return fail("鏂囦欢涓婁紶澶辫触"); + } + } + + @ApiOperation("1-涓婁紶鍗曚釜shp鏂囦欢") + @PostMapping("/uploadShp") + public R<Object> uploadShp(@RequestParam("file") MultipartFile file) throws IOException { + if (file.isEmpty()) { + return success("鏂囦欢涓嶈兘涓虹┖"); + } + // 鑾峰彇褰撳墠骞存湀鏃� + String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); + String targetDir = Paths.get(uploadedFolder, date).toString(); + log.info("鐩爣鐩綍: {}", targetDir); + createDirectoriesIfNotExists(targetDir); + try { + // 鏂囦欢鍦板潃鍏ㄧО + Path filePath = Paths.get(targetDir, file.getOriginalFilename()); + // 鏂囦欢鍚� + file.transferTo(filePath); + ZipUtils.unzip(targetDir + "\\" + file.getOriginalFilename(),targetDir); + File zipfile=new File(targetDir + "\\" + file.getOriginalFilename()); + zipfile.delete(); + return success(FileUtil.getShpPath(targetDir), "鏂囦欢涓婁紶鎴愬姛"); + } catch (IOException e) { + log.error("鏂囦欢涓婁紶澶辫触", e); + return fail("鏂囦欢涓婁紶澶辫触"); + } + } + + @ApiOperation("1-涓婁紶鍗曚釜鏂囦欢") + @PostMapping("/uploads") + public ResponseEntity<String> uploads(@RequestParam("file") MultipartFile file) throws IOException { + if (file.isEmpty()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("鏂囦欢涓嶈兘涓虹┖"); + } + // 鑾峰彇褰撳墠骞存湀鏃� + String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); + String targetDir = Paths.get(uploadedFolder, date).toString(); + log.info("鐩爣鐩綍: {}", targetDir); + createDirectoriesIfNotExists(targetDir); + try { + // 鑾峰彇褰撳墠鏃跺垎绉� + String time = LocalTime.now().format(DateTimeFormatter.ofPattern("HHmmss")); + // 鏂囦欢鍦板潃鍏ㄧО + Path filePath = Paths.get(targetDir, time + "_" + file.getOriginalFilename()); + // 鏂囦欢鍚� + file.transferTo(filePath); + return ResponseEntity.ok("鏂囦欢涓婁紶鎴愬姛"); + } catch (IOException e) { + log.error("鏂囦欢涓婁紶澶辫触", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("鏂囦欢涓婁紶澶辫触"); + } + } + + @ApiOperation("2-0涓婁紶澶氫釜鏂囦欢") + @PostMapping("/uploadFiles") + public ResponseEntity<String> uploadFiles(List<MultipartFile> files) throws IOException { + if (files.isEmpty()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("鏂囦欢涓嶈兘涓虹┖"); + } + // 涓婁紶鏂囦欢璺緞 + String targetDir = Paths.get(uploadedFolder, "upload").toString(); + log.info("鐩爣鐩綍: {}", targetDir); + createDirectoriesIfNotExists(targetDir); + CompletableFuture<Void> allUploadTasks = CompletableFuture.allOf(files.stream() + .map(file -> CompletableFuture.runAsync(() -> { + try { + file.transferTo(Paths.get(targetDir, file.getOriginalFilename())); + } catch (IOException e) { + log.error("鏂囦欢涓婁紶澶辫触", e); + throw new RuntimeException("鏂囦欢涓婁紶澶辫触"); + } + })).toArray(CompletableFuture[]::new)); + try { + allUploadTasks.get(); + return ResponseEntity.ok("鎵�鏈夋枃浠朵笂浼犳垚鍔�!涓婁紶鐩綍涓猴細" + targetDir); + } catch (InterruptedException | ExecutionException e) { + log.error("鏂囦欢涓婁紶澶辫触", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("鏂囦欢涓婁紶澶辫触"); + } + } + + + @ApiOperation("1-1 -涓婁紶鍗曚釜鏂囦欢") @ApiImplicitParam(name = "filePathName", value = "鏂囦欢澶瑰悕绉�", required = true, dataType = "String", paramType = "query", example = "upload", dataTypeClass = String.class) @PostMapping("/uploadSingleFile") public ResponseEntity<String> uploadSingleFile(@RequestParam("file") MultipartFile file, @RequestParam("filePathName") String filePathName) throws IOException { -- Gitblit v1.9.3