LoginSignup
9
7

More than 5 years have passed since last update.

POSTされた画像をExpressで取得する

Posted at

クライアントが'Content-Type': 'multipart/form-data'で画像をPOSTした場合
Expressでどういう処理をすればいいのか悩んだので記載しておきます。
multerを使います。

const express = require('express')
const multer = require('multer')
const app = express()
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    // 保存したいパス
    cb(null, '/var/image')
  }
  ,
  filename: function (req, file, cb) {
    // アップロードしたときのファイル名で保存
    cb(null, file.originalname)
  }
})
const upload = multer({ storage: storage })

// listening 3000 port
const server = app.listen(3000)

app.post('/image', upload.single('file'), function(req, res, next) {

  // POSTされた画像の情報をJSONで取得
  const req_file_json = JSON.stringify(req.file)

    // ***************
  // お好きな処理をここに
    // ***************

  res.json({'result': 'success!'})
})

上記の場合サーバ側では /image/var/[ファイル名] に画像が保存されます。
画像の情報も一行で取得できるので便利ですね。

// POSTされた画像の情報をJSONで取得
const req_file_json = JSON.stringify(req.file)

bodyにも情報が入っている場合は

const req_body_json = JSON.stringify(req.body)

で取得できますね。
画像をアップロードするときに他の情報(画像の正解ラベル等)がbodyに入っていてもこれで対応できますね。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7