강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dlfwnd55320860
dlfwnd55320860

câu hỏi đã được viết

Next.js với Spring Boot

Hiển thị hình ảnh sản phẩm-Next.js16_Bắt buộc đọc ghi chú buổi học

이미지 변환

Viết

·

70

0

안녕하세요

이미지 가져올때 주소창에 http://localhost:8080/29c13610-d02f-41b2-b12d-b1a65ebbec7a_img3.webp

이렇게 하면 잘뜨는데 images폴더안에도 파일명 webp로 잘들어와있고요 근데 db에서 받아오면

화면 캡처 2025-12-18 012455.png

fileName에 test1.webp로 29c13610-d02f-41b2-b12d-b1a65ebbec7a_img3.webp 이렇게 변환이 안됐는데 뭐가 문제인가요?

javascriptreactspring-bootjpanext.js

Câu trả lời 2

0

zk202308a5410님의 프로필 이미지
zk202308a5410
Người chia sẻ kiến thức

혹시 Next.js 16버전으로 개발 중이라면 http://localhost:8080 경로가 'private ip ...'로 처리되면서 이미지가 출력되지 않는 상황이 발생합니다.

 

Next.js16에서는 아래의 rewrites( )를 추가하시고

import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  /* config options here */

  images: {
    remotePatterns: [
      {
        protocol: 'http', // 이미지 프로토콜 (http, https)
        hostname: 'localhost', // 이미지 호스트 이름 (IP 주소 또는 도메인)
        port: '8080', // 포트 번호 (필요한 경우)
        pathname: '/**', // 허용할 경로 패턴 (모든 경로 허용 시 '/**')
      },
    ],
  },
  
  async redirects() {
    return [
      {
        source: '/product', // 사용자가 접근하려는 경로
        destination: '/product/catalog/1', // 리다이렉트될 경로
        permanent: true, // 영구적인 리다이렉트 (308 Permanent Redirect)
      },

    ];
  },

  async rewrites() {
    return [
      {
        source: '/api/backend/:path*', // 사용자가 접근하려는 API 경로
        destination: 'http://localhost:8080/:path*', // 내부적으로 매핑될 백엔드 서버 경로
      },
    ];
  },

  experimental: {
    serverActions: {
      bodySizeLimit: '10mb'
    }
  },
};

export default nextConfig;

<Image>의 링크는

 

    <Image
                 src={`/api/backend/s_${fileName}`}
                 alt={`${product.pname} thumbnail ${fileName}`}

와 같이 경로를 수정해 주세요.

 

 

이번주에 Next.js 16버전으로 변경된 코드를 업로드할 예정입니다.

dlfwnd55320860님의 프로필 이미지
dlfwnd55320860
Người đặt câu hỏi

버전은 15입니다

zk202308a5410님의 프로필 이미지
zk202308a5410
Người chia sẻ kiến thức

우선 http://localhost:8080/이미지파일명으로 호출해서 이미지가 나오는지 확인해 보시고 위의 코드는 15버전에서도 유용합니다

dlfwnd55320860님의 프로필 이미지
dlfwnd55320860
Người đặt câu hỏi

 

왜 DB가져올때 파일명이 다른지 저장할때 무슨 문제인지 모르겠네요

zk202308a5410님의 프로필 이미지
zk202308a5410
Người chia sẻ kiến thức

  1. 이미지들이 보관된 폴더에 업로드된 파일은

29c13610-d02f-41b2-b12d-b1a65ebbec7a_img3.webp

와 같이 UUID값_파일이름.webp 의 형태로 보관됩니다.

 

우선 브라우저에서 http://localhost:8080/29c13610-d02f-41b2-b12d-b1a65ebbec7a_img3.webp 과 같이 조회가 가능한지 먼저 체크해 주셔야 합니다.

 

  1. 다음 단계는 데이터베이스 테이블내에 동일한 이름의 파일이 추가되었는지 확인해 주세요

  2. Next.js에서는 설정 파일에 이미지 최적화를 잠시 중지해 보세요

 

const nextConfig = {

 

images: {

unoptimized: true, // ← Next.js 이미지 최적화 끔

},

};

 

  1. 브라우저에서 이미지가 출력되면 이전에 답변드린 내용을 적용해 보세요


 강의를 수정해서 백엔드 코드를 단계별로 받을 수 있도록 해 두었으니 참고해 주세요

 

 

0

안녕하세요, 인프런 AI 인턴입니다. 오일중님.

이미지 파일의 변환 및 디스플레이와 관련된 문제는 주로 파일 이름 정리 과정이나 데이터베이스에서의 데이터 읽기, 변환 과정에서 오류가 발생할 가능성이 큽니다. 아래는 이 문제를 해결하기 위해 확인할 몇 가지 사항입니다:

  1. 파일 이름 정리 및 데이터베이스 업데이트:

    • 이미지가 저장될 때 UUID 등으로 파일 이름이 변환되어 저장되는 방식인지 확인해 보세요. 만약 변환된 파일 이름이 데이터베이스에 저장되지 않았다면, 추후 호출 시 불일치가 발생하게 됩니다.
    • 파일이 저장되면서 데이터베이스에도 해당 파일의 정확한 이름이 반영되었는지 확인하세요.
  2. 데이터베이스 값 불일치 확인:

    • 데이터베이스에서 fileName 컬럼에 29c13610-d02f-41b2-b12d-b1a65ebbec7a_img3.webp 이 제대로 업데이트 되었는지를 확인하세요. 이 값이 test1.webp로 남아 있다면, 저장 과정에서의 오류일 수 있습니다.
  3. 애플리케이션 로직 검토:

    • 파일이 저장될 때 보내는 요청에 대한 로직 검토가 필요합니다. 저장 과정에서 파일 이름이 변환되지 않고 원래 이름으로 저장된다면, 저장 전의 파일 처리 과정에서 문제가 있을 수 있습니다.

아래의 링크에서 비슷한 문제를 겪으며 해결 방법을 공유한 게시물을 확인하시면 도움이 될 수 있습니다:

  • 21강 이미지 출력이 안됩니다. 문제 해결을 위해 강의 내 설정 관련 유사한 이슈를 다룬 질문입니다. 이미지 이름 변환 및 데이터베이스 설정 문제를 해결하는 데 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của dlfwnd55320860
dlfwnd55320860

câu hỏi đã được viết

Đặt câu hỏi