Node.jsで画像アップロードを受けつけるサーバー

カメラ撮影したものをサーバーにアップロードする仕組みを作っています。

クライアント側コードはまた別途

今回はサーバー側のミニマム構成っぽいものを書いてみたのでメモです。
環境はNode.js v8.2.0です。

準備

expressだけ使っているので

npm i --save express

だけはやります。

コード

server.js
'use strict';

const fs = require('fs');
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => res.send('POSTでアップロードしてください。'));

app.post('/', (req, res) => {
    let buffers = [];
    let cnt = 0;

    req.on('data', (chunk) => {
        buffers.push(chunk);
        console.log(++cnt);
    });

    req.on('end', () => {
        console.log(`[done] Image upload`);
        req.rawBody = Buffer.concat(buffers);
        //書き込み
        fs.writeFile('./img.jpeg', req.rawBody, 'utf-8',(err) => {
            if(err) return;
            console.log(`[done] Image save`);
        });
    });
});

app.listen(PORT);

実行

node app.js

こんな感じで普通にサーバーを立てます。

その後画像データが送信されるとこんな感じでプログレス表示のように表示されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[done] Image upload
[done] Image save

無事に保存できました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.