質問: Buffer.concat(buffers); //書き込み fs.writeFile('./img.jpg', req.rawBody, 'utf-8',(err) => { if(err) return; console.log(`[done] Image save`); }); }); }); app.listen(PORT); ``` ### 試したこと 様々なJEPG画像で試しましたが、出力されるファイルのKBが変わるため送信はできていると思います。 ### 補足情報(FW/ツールのバージョンなど) 環境は Windows 10 Node.js v6.11.5 Powershell を使用しています。 他にも画像をアップロードする方法をご存知でしたらご教授願いたいです。 また、そもそも画像をアップロード自体、Node.jsではしない等あれば、Webアプリケーションでは通常どのような手法が用いられるのかも教えていただきたいです。
回答: 受信する方法と送信する方法がミスマッチしているのだと思います。 質問者さんは `` のようなフォームを `multipart/form-data` 形式で送っているようです。 参考にされたページのコードは、フォームではない手段でバイナリを直接リクエストボディに入れた場合のものです。 フォームで送信されたファイルを受け取るには、multer などを使うと簡単そうです。 ``` let multer = require('multer') let upload = multer({dest: './'}) ... app.post('/', upload.single('fieldNameHere'), (req, res) => { // req.file がアップロードされたファイルのメタデータ(ファイル内容そのものではない) }); ```