From 805d19a646df9580693d226dd5414678da66e654 Mon Sep 17 00:00:00 2001 From: hwangsungmin Date: Sat, 5 Oct 2024 15:48:43 +0900 Subject: [PATCH] [fix] str to txt, file download --- .../volare/controller/ScriptController.java | 8 +++ .../example/volare/service/ScriptService.java | 62 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/volare/src/main/java/com/example/volare/controller/ScriptController.java b/volare/src/main/java/com/example/volare/controller/ScriptController.java index 7e36453..4649b69 100644 --- a/volare/src/main/java/com/example/volare/controller/ScriptController.java +++ b/volare/src/main/java/com/example/volare/controller/ScriptController.java @@ -10,10 +10,12 @@ import com.fasterxml.jackson.core.JsonProcessingException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.core.io.InputStreamResource; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -78,4 +80,10 @@ public ResponseEntity> updateScript( public ApiResponse getScriptDetails(@PathVariable Long scriptId) { return ApiResponse.onSuccess(scriptService.getScriptInfo(scriptId)); } + + // Script ID로 txt 파일 다운로드 + @GetMapping("/{scriptId}/download") + public ResponseEntity downloadScriptTxtFile(@PathVariable Long scriptId) throws IOException { + return scriptService.downloadScriptTxtFile(scriptId); + } } diff --git a/volare/src/main/java/com/example/volare/service/ScriptService.java b/volare/src/main/java/com/example/volare/service/ScriptService.java index 3be917f..72f0410 100644 --- a/volare/src/main/java/com/example/volare/service/ScriptService.java +++ b/volare/src/main/java/com/example/volare/service/ScriptService.java @@ -14,11 +14,21 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.Cacheable; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.time.LocalDateTime; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import com.example.volare.model.ScriptScene; @@ -161,4 +171,56 @@ public List> updateScriptItems(List> uLi return uList; } + // Script 데이터를 txt 파일로 변환하는 메서드 추가 + public Path generateScriptTxtFile(Long scriptId) throws IOException { + // Script 조회 + Optional