2016-09-22 567 views
0

我正嘗試將文件上傳到我的快遞服務器。客戶端代碼如下所示:如何在Express js中獲取FormData?

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

在我的Express服務器:

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

你不送香草請求正文與您的POST請求。你發送'multipart/form-data',有一個單獨的body解析器。比較https://github.com/expressjs/body-parser,段落*「這不處理多部分機構」* ff。 – Tomalak

回答

2

由於@Tomalak表示body-parser不處理多部分機構。

所以你需要使用一些第三方的模塊,我建議使用真棒模塊multer

我試圖做你的代碼,希望它可以幫助你

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'); 
     } 
    }); 
});