使用axios从前端发送csv到后端

Arx*_*ris 5 javascript node.js reactjs axios

我正在尝试使用 axios 将 csv 文件从 ReactJS 的前端发送到 NodeJS 的后端。该 csv 文件是通过浏览 UI 按钮选择的,并使用 React 存储在状态中。网上搜索了一下,这是我的HTTPS请求代码:

\n
let formmData = new FormData();\nformData.append(\'file\', this.state.selectedFile);\n           \nconst {data : QueryResult} = await axios({\n    method: \'post\',\n    url: "https://localhost:...",\n    formData,\n});\n
Run Code Online (Sandbox Code Playgroud)\n

注意:this.state.selectedFile包含一个对象,当登录控制台时该对象是:

\n
File\xc2\xa0{name: "MyFile.csv", lastModified: 1614958303483,\xc2\xa0\xe2\x80\xa6}\n
Run Code Online (Sandbox Code Playgroud)\n

我还想说,使用 Postman 时此端点工作正常,如下所示:

\n

在此输入图像描述

\n

在我的后端打印请求后,如果来自我的前端的请求,我会看到:

\n
body: {}\n
Run Code Online (Sandbox Code Playgroud)\n

我不明白我做错了什么,这不会传递到我的后端。

\n

我还看到过去这是 GitHub 上 axios 的一个开放问题。

\n

现在可以使用 axios 实现这一点还是应该使用另一个模块?有任何想法吗?

\n

Aje*_*hah 3

你需要做:

await axios({
  method: 'post',
  url: "https://localhost:...",
  data: formData
});
Run Code Online (Sandbox Code Playgroud)

因为当你只写“formData”时,它会变成:{ formData: formData }按照(新的 ES2015 对象简写属性名称)。

您还可以使用:

await axios.post('your_url', formData) 
Run Code Online (Sandbox Code Playgroud)