FormData&Axios:将文件发送到节点服务器

时间:2019-12-09 21:05:10

标签: javascript node.js vue.js axios form-data

在Vuejs中,我有一个图片拖放代码。我曾尝试使用FormData和axios将文件发送到NodeJS,但没有成功,就像网络上的许多示例一样。

export default function(url, file, name = "avatar") {
  const formData = new FormData();
  formData.append(name, file);

  const config = {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  };
  return axios.post(url, formData, config);
};

问题来自客户端而不是服务器 参见https://github.com/expressjs/multer/issues/548https://gist.github.com/HarshithaKP/ebc0e79800e5638fe827c157360378be

我也尝试了经典的输入法,并且效果很好

<form ref='uploadForm' 
  id='uploadForm' 
  action='https://localhost:4000/api/upload/picture' 
  method='post' 
  encType="multipart/form-data">
    <input type="file" name="sampleFile" />
    <input type='submit' value='Upload!' />
</form> 

我得出的结论是:Axios的标题不完整。

有人建议使用表单数据库https://github.com/form-data/form-data

来完成页眉
headers: {
   ...form.getHeaders(),
   'Content-Type': 'multipart/form-data'
}

但是在表单数据中,该库将没有功能getHeaders()的经典对象FormData(https://developer.mozilla.org/fr/docs/Web/API/FormData)用于客户端。它不存在。在代码中,我们有 module.exports = typeof self == 'object' ? self.FormData : window.FormData;

问题

如何正确填充标头,以便服务器用文件重新协调POST?一种getHeaders()函数。

0 个答案:

没有答案