Expressにアップロードされた画像をGCP Storageにアップロードする

2021/03/14

#Node.js

今回はNode.jsのExpressにアップロードされた画像をGoogle CloudのStorageにアップロードしてみたので備忘録として書きます。

必要なライブラリなど


multerと@google-cloud/storageを使用します。

npm install multer --save
npm install @google-cloud/storage --save


コード


HTML

<form method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="送信">
</form>


バックエンドのコードは関係ない部分を省略しています。

バックエンド

var multer = require('multer');
var upload = multer();

const {Storage} = require('@google-cloud/storage');

const keyFilename = 'キーファイル';
const bucketName = 'バケット名';
const storage = new Storage({keyFilename: keyFilename});
const bucket = storage.bucket(bucketName);

router.post("/",upload.single("image"),(req,res,next)=>{
    let file = req.file.buffer //ファイルの取得
    let blob = bucket.file("ファイル名") //GCPのファイルパス・ファイル名を設定
    blob.save(file,{gzip:true}).then(function(){
        res.json("ok")
    })
})


GCP Storageではsaveを使うことでオブジェクトから直接アップロードすることができます。


関連記事:Node.js

npm(npx)でcb.apply is not a functionが発生したので対処法をメモ

Node.js

NodejsからCloud Bigtableを使う方法

Node.js

TS×ExpressでrawBodyを取る(備忘録)

Node.js