Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8705

[Node.js] 一時的ファイル(temp file)を使ってFirebase Storageへファイルをアップロードする

$
0
0

環境・バージョン

  • node version v14.4.0
  • "firebase-admin": "^8.7.0"
  • "tmp": "^0.2.1"

実装

Firebase Admin SDKの初期化

firebase-admin.js
varadmin=require('firebase-admin')// Retrieve environment variablesconstServiceAccountFilePath=process.env.FIREBASE_SERVICEACCOUNT_FILEPATHconstStorageURL=process.env.FIREBASE_STORAGE_URL// xxxxx.appspot.comconstserviceAccount=require(ServiceAccountFilePath)admin.initializeApp({credential:admin.credential.cert(serviceAccount),storageBucket:StorageURL,})module.exports=admin

temp fileを使ってアップロード

Firebase Storageに対してファイルをアップロードするために、GCP Node.jsライブラリのBucket.uploadメソッドを利用しました。

一時的ファイル作成と削除にはtmpというサードパッケージを利用しました。

firebase-storage.js
constfs=require('fs')consttmp=require('tmp')constadmin=require('./firebase-admin')// 上記の初期化コードをインポートconstrequestToStorageService=(cloudFilePath,fileContent)=>{varpromisetmp.file(function_tempFileCreated(err,path,fd,cleanupCallback){if(err)throwerrtry{constbucket=admin.storage().bucket()fs.writeFile(path,JSON.stringify(fileContent),err=>{// 一時ファイルに書き込みif(err)throwerr})promise=bucket.upload(path,{// ファイルをFirebase Storageへアップロードdestination:cloudFilePath,metadata:{contentType:'application/json'},})}finally{cleanupCallback()// ファイル削除}})returnpromise}

tmp.file(function _tempFileCreated(err, path, fd, cleanupCallback)によって一時的ファイルのパス(path)とファイルディスクリプタ(fd)が渡されます。

そのファイルに書き込みし、Firebase Storageへアップロードします。

また、bucket.uploadはPromiseを返します。


Viewing all articles
Browse latest Browse all 8705

Trending Articles