From 55c47a43e61b48ba58f007da92915cb4970792b8 Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Sun, 7 Jun 2026 20:32:37 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20URL=20=EC=9D=84=20=EC=A0=88=EB=8C=80?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=EB=A1=9C=20=EB=B0=98=ED=99=98=20=E2=80=94=20?= =?UTF-8?q?=EC=95=B1(Capacitor)=EC=97=90=EC=84=9C=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 앱은 출처가 localhost 라 /api/images/{id} 상대경로가 백엔드로 안 감 → 안 보임 - app.public-url(기본 https://app.sblog.kr) 기준 절대 URL 반환 → 웹/PC/APK 모두 로드 Co-Authored-By: Claude Opus 4.8 --- .../com/sb/web/board/controller/BoardImageController.java | 8 +++++++- src/main/resources/application.yml | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sb/web/board/controller/BoardImageController.java b/src/main/java/com/sb/web/board/controller/BoardImageController.java index 5fa45a1..70ba315 100644 --- a/src/main/java/com/sb/web/board/controller/BoardImageController.java +++ b/src/main/java/com/sb/web/board/controller/BoardImageController.java @@ -6,6 +6,7 @@ import com.sb.web.board.domain.BoardImage; import com.sb.web.board.service.BoardImageService; import com.sb.web.common.exception.ApiException; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.CacheControl; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -28,6 +29,10 @@ public class BoardImageController { private final BoardImageService service; + // 앱(Capacitor) 출처가 localhost 라 상대경로가 안 통하므로 절대 URL 로 반환 + @Value("${app.public-url:}") + private String publicUrl; + @PostMapping("/api/board/images") public Map upload( @RequestParam("image") MultipartFile file, @@ -40,7 +45,8 @@ public class BoardImageController { throw new ApiException(HttpStatus.BAD_REQUEST, "이미지 파일만 업로드할 수 있습니다."); } Long id = service.save(current.getId(), contentType, file.getBytes()); - return Map.of("url", "/api/images/" + id); + String base = (publicUrl == null) ? "" : publicUrl.replaceAll("/+$", ""); + return Map.of("url", base + "/api/images/" + id); } @GetMapping("/api/images/{id}") diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 85e9e6c..c2cef91 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -74,6 +74,8 @@ google: app: crypto: account-key: ${ACCOUNT_CRYPTO_KEY:} + # 업로드 이미지 등 외부에서 접근할 절대 URL 베이스. 앱(Capacitor)은 출처가 localhost 라 상대경로가 안 통함. + public-url: ${PUBLIC_URL:https://app.sblog.kr} # ===== Logging ===== logging: