인프런 커뮤니티 질문&답변

Jihwaan Chun님의 프로필 이미지
Jihwaan Chun

작성한 질문수

[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)

파일제거 구현, Drag and Drop, 멀티파일 업로드 구현

getPublicUrl로 이미지 URL 받는 방법?

해결된 질문

작성

·

105

0

getImageUrl을 얻는 방식을 강의 방식이 아닌 getPublicUrl을 사용해서 얻으려면 어떻게 해야 하나요?

 

 

답변 1

0

로펀님의 프로필 이미지
로펀
지식공유자

Supabase의 getPublicUrl을 Next.js 14에서 사용하는 방법을 간단히 설명해드릴게요.

 

1. getPublicUrl 사용법

Supabase Storage에 저장된 파일의 공용 URL을 생성하려면, 아래처럼 getPublicUrl을 사용하면 됩니다.

export async function getPublicImageUrl(path) {

  const { data } = supabase
    .storage
    .from('your-bucket-name')  // 버킷 이름
    .getPublicUrl(path);       // 파일의 경로

  return data.publicUrl;
}

이 함수는 주어진 경로에 해당하는 파일의 공용 URL을 반환합니다. 예를 들어, images/example.png 파일의 URL을 가져올 수 있습니다.

 

2. Next.js에서 활용하기

- 서버 컴포넌트에서 이미지 URL을 미리 생성하고 렌더링할 수 있습니다:

  // app/page.js
  import { getPublicImageUrl } from './supabase-client';
  export default async function Page() {
    const imageUrl = await getPublicImageUrl('images/example.png');
    return (
      <div>
        <img src={imageUrl} alt="Example" />
      </div>
    );
  }

 

- 클라이언트 컴포넌트에서 동적으로 URL을 가져와 렌더링할 수도 있습니다:

  import { useEffect, useState } from 'react';
  import { getPublicImageUrl } from './supabase-client';
  export default function ImageComponent() {
    const [imageUrl, setImageUrl] = useState('');
    useEffect(() => {
      async function fetchImageUrl() {
        const url = await getPublicImageUrl('images/example.png');
        setImageUrl(url);
      }

      fetchImageUrl();
    }, []);

    return (
      <div>
        {imageUrl && <img src={imageUrl} alt="Example" />}
      </div>
    );
  }

 

요약

- getPublicUrl을 사용해 Supabase Storage에서 파일의 공용 URL을 가져올 수 있습니다.

- 서버 또는 클라이언트 컴포넌트에서 이 URL을 활용해 이미지를 렌더링할 수 있습니다.

 

더 궁금한 점이 있으면 편하게 말씀주세요!

Jihwaan Chun님의 프로필 이미지
Jihwaan Chun

작성한 질문수

질문하기