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 175ccaa..cf34d8a 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 96fa8f6..ccc7dd2 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; @@ -162,10 +172,65 @@ public List> updateScriptItems(List> uLi } + // Script 데이터를 txt 파일로 변환하는 메서드 추가 + public Path generateScriptTxtFile(Long scriptId) throws IOException { + // Script 조회 + Optional