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

コード 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を使うことでオブジェクトから直接アップロードすることができます。

コメント

タイトルとURLをコピーしました