[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しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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); }); }); |
調べてみると、要するに
POSTしてくるデータが大きすぎるよ!
ってことですね。
というわけで早速、post_max_sizeを変えればいいんだなーと思ったわけですが・・・!?
千田は元々PHPをやっていた事もあり、サクッと設定変える気でいましたが、
post_max_sizeなんてどこにもない。
Node.jsでどうやってやんの???
となったので色々調べたところ下記の対応でクリア。
1 | app.use(express.urlencoded({ extended: true })); |
を
1 | app.use(express.urlencoded({ extended: true, limit: '10mb' })); |
に変更。
jsonの場合も同様。
1 | app.use(express.json({ extended: true, limit: '10mb' })); |
ちなみに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