2016-09-22 21 views
0

エクスプレスサーバにファイルをアップロードしようとしています。Express jsでFormDataを取得するには?

axios.post('localhost:3030/upload/audio/', formData) 

そして、私の特急サーバーで:

App.use(bodyParser.urlencoded({ extended: true })); 
App.use(bodyParser.json()); 

App.post('/upload/audio/', function uploadAudio(req, res) { 
    let quality = ['320', '128']; 
    let file = req.body; 

    console.log(file) 
    res.send('Frick') 
} 

しかし、mp3ファイルが送信されるにもかかわらず:

http://i.imgur.com/bB7BofH.png

req.bodyが空のクライアントコードは次のようになりますログに記録すると(空のオブジェクトに注意):

enter image description here

Express.jsでformData(およびファイル)を取得するにはどうすればよいですか?

+0

を助けることを願って、私はあなたのコードを実行しようとしましたmulter

素晴らしいモジュールを使用して、私はお勧めいくつかのサードパーティ製のモジュールを使用する必要がありますあなたのPOSTリクエストで。 'multipart/form-data'を送ると、そのための別のボディパーサーがあります。 https://github.com/expressjs/body-parser、paragraph * "これはマルチパート本体を処理しません" * ffを比較してください。 – Tomalak

答えて

2

@Tomalakによると、body-parserはマルチパートボディを処理しません。

は、だから、あなたはバニラリクエストボディを送信しません、それはあなたに

App.post('/upload/audio/', function uploadAudio(req, res) { 
    var storage = multer.diskStorage({ 
     destination: tmpUploadsPath 
    }); 
    var upload = multer({ 
     storage: storage 
    }).any(); 

    upload(req, res, function(err) { 
     if (err) { 
      console.log(err); 
      return res.end('Error'); 
     } else { 
      console.log(req.body); 
      req.files.forEach(function(item) { 
       console.log(item); 
       // move your file to destination 
      }); 
      res.end('File uploaded'); 
     } 
    }); 
}); 
関連する問題