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