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 |
댓글