Dev

firebase 저장된 이미지 불러오기

minsun309 2024. 8. 29. 09:29

Firebase Storage

동영상과 같은 컨텐츠를 저장할 수 있는 저장소인 Firebase Storage를 활용하여 업로드, 컨텐츠를 가져올 수 있다.

 

규칙수정

 

이미지 저장

파란색 버튼은 파일 업로드를 통해 이미지를 올려도 되고 하위 이미지처럼 폴더 생성 후 폴더안에 이미지를 저장할 수 있다.

 

 

파일 하나만 가져올 경우

이미지 파일 URL을 얻는 방식으로 가져온다.

import { ref, listAll, getDownloadURL } from "firebase/storage";
import { fireStorage } from "../../firebase/firebasedb";
import { useEffect } from "react";

export default function Test() {
	const [url, setUrl] = useState("");
  const g = async () => {
    const imageURL = await getDownloadURL(
      ref(fireStorage, "스크린샷 2024-01-09 160020.png")
    );
    setUrl(imageURL);
  };
  useEffect(() => {
    g();
  }, []);

  return (
    <div className="flex flex-col gap-3 ml-5">
			 <Image src={url} alt="1" width={200} height={200} />
		</div>
  );
}

 

 

 

폴더 안 여러 이미지 가져올 경우

getStaticProps를 활용하여 특정 폴더 안 이미지를 가져온다.

import { ref, listAll, getDownloadURL } from "firebase/storage";
import { fireStorage } from "../../firebase/firebasedb";
import Image from "next/image";

type Props = {
  images: string[];
};

export default function Test({ images }: Props) {
  console.log("이미지 다운로드 URL:", images);

  return (
    <div className="flex flex-col gap-3 ml-5">
      <p>Test</p>
      <Image src={images[0]} alt="1" width={200} height={200} />
      <Image src={images[1]} alt="1" width={200} height={200} />
    </div>
  );
}

export async function getStaticProps(): Promise<{ props: Props }> {
  const fileRef = ref(fireStorage, "coverImage/");
  // coverImage/ 하위에 있는 모든 파일에 대한 참조
  const result = await listAll(fileRef);
  const urls = await Promise.all(
    result.items.map(async (item) => {
      const url = await getDownloadURL(item);
      return url;
    })
  );

  console.log(urls);

  return {
    props: {
      images: urls,
    },
  };
}

 

 

결과

 

 

 

참고

https://velog.io/@taemin4u/firebase-storage-React에서-이용하기

 

firebase storage React에서 이용하기

Firebase로 들어가 Storage를 만들자. 가장 중요한 것은 Cloud Storage 위치는 asia-east2, 그리고 보안규칙을 설정하는 것이다.그 후 firebase 라이브러리를 npm install 하자.Storage를 만들면 환경 변수가 제시될

velog.io