使用javaScript中的fetch API上传文件

时间:2017-04-07 10:49:04

标签: javascript node.js reactjs fetch multipart

您好我试图上传这么多天的tar文件,但每次我都失败了。我是这个JS,UI和https req / res域的新手。 我的环境是:nodeJS,后端的JavaScript。 ReactJS用于前端。 我需要将tar文件从我的机器上传到远程服务器。

这是我的前端代码,我正在进行上传文件的获取请求。

export function postXCCDF () {
  let _headers = {
    'Accept': 'application/json, application/xml, text/plain, text/html, *.*',
    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu'
  };

  var formData = new FormData();
  formData.append('type', 'file');
  formData.append('file', 'C:\\MyDrive\\rules.zip');

  let uri = '/rest/policy';

  const options = { method: 'POST', headers: _headers, body: formData };
  return fetch(`${_host}${urlPrefix}${uri}`, options)
    .then(processStatus)
    .then(response => response.json());

}

这是我的后端代码,我希望tar文件可以接收。

router.post('/policy', function(req, res) {
    console.log('hey I reached here');
    console.log('hemant req',req.body.formData); // prints hemant req undefined
    // Dont know how to save it to some directory. ??? :(
});

我的全部想法是将tar文件上传到位于远程位置的服务器。我已经尝试了很多其他方法,但似乎没有任何帮助。

1 个答案:

答案 0 :(得分:1)

body-parser模块只处理JSON和urlencoded表单提交,而不是multipart(如果你上传文件就是这种情况)。

对于multipart,您需要使用connect-busboymulterconnect-multiparty之类的内容(multiparty / formidable是最初在express bodyParser中间件中使用的内容)。