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

Jihwaan Chun님의 프로필 이미지

작성한 질문수

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

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

getPublicUrl로 이미지 URL 받는 방법?

해결된 질문

24.08.27 01:48 작성

·

36

0

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

 

 

답변 1

0

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

2024. 08. 27. 14:19

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을 활용해 이미지를 렌더링할 수 있습니다.

 

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