2016-11-03 21 views
0

获取文件我是新蜂ExpressJS, 我想从javascript上传file和一些data,使用AJAX post作为FormData object,以表达JS routes,将文件保存在服务器上。我能够从前端发布,但无法从服务器端检索数据。ExpressJS从FORMDATA

以下是代码片段我想:

var files = []; 
    $('#upload').on('change',function(){ 
     var form_data = new FormData(); 
     form_data.append('file_uplaoded',$('#upload')[0].files[0]); 
     form_data.append('name1',"10000900055"); 
     form_data.append('name2',"10000900044"); 
     form_data.append('name3',"10000900033"); 
     form_data.append('name4',"10000900022"); 
     form_data.append('name5',"10000900011"); 
     console.log(form_data); 
     $.ajax({ 
      type: "POST", 
      url: '/ulploadfile', 
      data: form_data, 
      cache: false, 
      processData: false, 
      contentType: false, 
      success: function(data){ 
       alert('success'); 
      } 
      // dataType: 'json', 
      // contentType: "application/json; charset=utf-8" 
     }).done(function(data) { 
      // alert('success1'); 
     }); 
    }); 

服务器端代码片段:

router.post('/ulploadfile', function(req, res, next) { 
    var body = ''; 
    try { 
     req.on('data', function (data) { 
      body += data; 
     }); 
     req.on('end', function() { 
      var post = qs.parse(body); 
      console.log(post); 
      res.send("UPLOADING FILE RESPONSE"); 
     }); 
    } catch (e) { 
     console.log(e); 
     res.send("UPLOADING FILE RESPONSE ERRPR"); 
    } finally { 
    } 
}); 

UPDATE OUT PUT屏幕截图来自客户端的代码片段

AJAX后 Output sceenshot

所以我想知道如何检索从后端请求对象发布的数据。我想这样做,而不使用任何其他软件包。

很多非常感谢您的帮助&的建议。

+0

得到它通过https://www.npmjs.com/package/express-fileupload解决 – Dipak

回答

1

有在POST请求的文件(多数据)良好的模块,称为multer

您可以添加有验证功能,目的地,不同的存储... 甚至有插件multer-s3为,使用作为存储。

router.post('/ulploadfile', upload.single('file_uplaoded'), function(req, res, next) { 
 
    // req.file is the `file_uplaoded` file 
 
    // req.body will hold the text fields, if there were any 
 
})

+0

谢谢,我用强大的包装解决它。 – Dipak