express.jsでファイルをGoogle Cloud Storageにアップロードする(1)
express.jsとgoogle cloud storage
express.js
node.jsプラットホームで定番のweb framework。高い柔軟性と可用性を持ち、便利なmoduleも充実している。
Google Cloud Storage
Googleが提供した静的ファイルストーレージサービス。AWSのS3と似ている。Google APIやブラウザを通してファイル管理することができる。
サンプルアプリを作る
express.jsで複数のファイルがアップロードできるアプリを作ってみる。
必要なmodule
- multer(簡単にファイルアップロードを実装できるexpress.jsのmodule)
- googleapis(google api module)
npm
でmoduleをインストールする
multerを導入する
app.js
を開いて、まずmulter
モジュールをrequire
する:
次に、app.use('/', routes);
の直前に下記のコードを加える:
これで、アップロード機能の実装は完了。びっくりするぐらい簡単だが、プロダクションにはまだ細かい設定が必要。この記事では詳しく説明しないが、興味ある方はmulterの公式ドキュメントを参考してください:https://github.com/expressjs/multer。
実際ファイルアップされたかどうかを確認したいので、multerにonFileUploadComplete
コールバックを設定して、アップされたファイルのパスをプリントする。
適当にrouteとテンプレートを作ってテストする:
route
テンプレート
npm install && npm start
でプレビューしてみる:
うまくアップロードされたようで、もうちょっと完成度あげってみよう:アップした画像を表示させてみる。multerのchangeDest
というオプションでファイルのアップロード先を変えることができる:
テンプレートの方もちょっと調整する:
もう一回プレビューしてみよう:
できた!これで、簡単なファイルアップロード機能が実装完了!
この記事では最低限のファイルアップロード機能を実装したが、実際にプロダクションに移行する時に、セキュリティ面を考慮しなければならない。
次はこのアプリでアップロードしたファイルをGoogle Cloud Storageに保存するという仕組みを作ってみる:http://befool.co.jp/blog/chainzhang/expressjs-file-upload-to-google-cloud-storage-2/