본문 바로가기
잡다한 공부/DB

[FireBase] 실습-3

by 자이구 2024. 3. 16.

Storage

S3 이미지 URL을 Storage에 업로드

const {onRequest} = require("firebase-functions/v2/https");
const logger = require("firebase-functions/logger");
const fs = require("fs");
const fetch = require("node-fetch");
const {
  initializeApp,
  applicationDefault,
  cert,
} = require("firebase-admin/app");

const admin = require("firebase-admin");

initializeApp({
  credential: applicationDefault(),
});

const { PassThrough } = require("stream"); // Stream 모듈에서 PassThrough 클래스를 불러옵니다.

//s3이미지 url로 firebase storage에 이미지 추가
exports.uploadImageToFirebase = onRequest(async (request, response) => {
  const imageUrl =
    "s3이미지 url";

  try {
    const res = await fetch(imageUrl, { mode: "cors" });
    const blob = await res.buffer();

    const file = admin
      .storage()
      .bucket("버켓주소")
      .file(`pictures/thumbnail.png`);

    const streamwrite = new PassThrough(); // Stream 객체를 생성합니다.
    streamwrite.write(blob);
    streamwrite.end();

    streamwrite.pipe(
      file
        .createWriteStream({
          metadata: { contentType: "image/png" },
          resumable: true,
        })
        .on("finish", () => {
          response.send("이미지 업로드 성공");
        })
    );
  } catch (error) {
    console.error("Error:", error);
    response.status(500).send("이미지 업로드 실패");
  }
});

 

서버에서 데이터 받아서 Storage에 텍스트파일로 저장

const {onRequest} = require("firebase-functions/v2/https");
const logger = require("firebase-functions/logger");
const fs = require("fs");
const fetch = require("node-fetch");
const {
  initializeApp,
  applicationDefault,
  cert,
} = require("firebase-admin/app");

const admin = require("firebase-admin");

initializeApp({
  credential: applicationDefault(),
});

//서버에서 데이터 받아서 firebase cloud에 올리기
exports.txt_estimate = onRequest(async (request, response) => {
  let reqParamCollection = request.query.collection;
  let reqParamDoc = request.query.doc;
  const docSnapshot = await db
    .collection(reqParamCollection)
    .doc(reqParamDoc)
    .get();
  const docData = docSnapshot.data();

  let filename = "text.txt";
  let content = JSON.stringify(docData);

  fs.writeFileSync(filename, content);

  const bucket = admin.storage().bucket("버켓주소");
  await bucket.upload(filename, {
    destination: `folder/${filename}`,
  });

  logger.info("Content file uploaded to Firebase Storage", {
    structuredData: true,
  });

  response.send();
});

 

'잡다한 공부 > DB' 카테고리의 다른 글

Prepared Statement에 대해  (0) 2025.02.19
[FireBase] 실습-2  (0) 2024.03.16
[FireBase] 실습-1  (0) 2024.03.16
Mybatis VS JPA  (0) 2024.02.26
트랜잭션이란?  (1) 2024.01.08

댓글