[Node.js]Node.js+Expressでrequest entity too largeがでた時の話
2019.04.02

こんにちは千田です。
今回はExpressの開発でちょっと詰まったことがあったので、その話を書きたいと思います。
Expressバージョン:4.16.4
画像データをBase64にエンコードしてサーバーにPOSTするような処理を実装していたところ、
request entity too large 413
ふむ。なんだこれ。
ちなみにクライアント側はこんな感じでcanvasの画像をBase64エンコードしてajaxでPOSTしています。
[cc_javascript]
let canvas = document.createElement(“canvas”);
let ctx = canvas.getContext(“2d”);
let video;
$(‘#save’).on(‘click’, () => {
canvas.width = 640;
canvas.height = 480;
ctx.drawImage(video, 0, 0);
$.ajax({
url : ‘/ajax/save’,
type: ‘post’,
data: {
‘image’: canvas.toDataURL()
}
})
.done((result) => {
console.log(result);
})
.fail((err) => {
console.log(err);
});
});
[/cc_javascript]
調べてみると、要するに
POSTしてくるデータが大きすぎるよ!
ってことですね。
というわけで早速、post_max_sizeを変えればいいんだなーと思ったわけですが・・・!?
千田は元々PHPをやっていた事もあり、サクッと設定変える気でいましたが、
post_max_sizeなんてどこにもない。
Node.jsでどうやってやんの???
となったので色々調べたところ下記の対応でクリア。
[cc_javascript]
app.use(express.urlencoded({ extended: true }));
[/cc_javascript]
を
[cc_javascript]
app.use(express.urlencoded({ extended: true, limit: ’10mb’ }));
[/cc_javascript]
に変更。
jsonの場合も同様。
[cc_javascript]
app.use(express.json({ extended: true, limit: ’10mb’ }));
[/cc_javascript]
ちなみにresuest bodyのデフォルトサイズは100kbに設定されているようです。
無事、request entity too largeも消えて画像のアップロードができるようになりました。
めでたし。めでたし。
参考:
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io
