【发布时间】:2022-01-19 21:44:07
【问题描述】:
这是我的反应代码,当我在我的 express 服务器上使用 console.log(req.body) 时,我得到一个空的结果(像这样-> { body: {} })我应该得到那个 csv 中的所有数据文件在我的服务器请帮助,提前谢谢你
import React, { useState } from 'react';
import axios from 'axios';
const Form = () => {
const [csvFile, setCSVFile] = useState();
const sendRequst = async () => {
try {
const res = await axios.post('http://localhost:4040/inventory/customer-segmentation', { body: csvFile });
} catch (err) {
console.log(err);
}
};
const handleSubmit = (e) => {
e.preventDefault();
console.log(csvFile) (*i get this File {name: 'convertcsv.csv', lastModified: 1636535333170, lastModifiedDate: Wed Nov 10 2021 14:38:53 GMT+0530 (India Standard Time), webkitRelativePath: '', size: 3491, …}*)
sendRequst();
};
return (
<div>
<form onSubmit={handleSubmit}>
<input
type='file'
accept='.csv'
onChange({(e) => {
setCSVFile(e.target.files[0]);
}}
/>
<br />
<button type='submit'>
Submit
</button>
</form>
</div>
);
};
export default Form;
【问题讨论】:
-
您的组件中几乎没有错误。首先,react 异步设置状态,因此在实际状态更改之前调用
sendRequest。然后,您的变量csvFile在状态更改时不会更改。当状态更改时,您的组件将被调用,并且将有一个名为csvFile的全新变量。 -
@Mr.Hedgehog 现在我稍微更改了我的代码,现在我得到一个 csv 文件,当我在我的浏览器控制台文件 {name:'convertcsv .csv', lastModified: 1636535333170, lastModifiedDate: Wed Nov 10 2021 14:38:53 GMT+0530 (India Standard Time), webkitRelativePath: '', size: 3491, ...}
-
现在您需要发送文件。您可以通过多种方式执行此操作。一个是form data 的字段。另一个将在客户端读取文件并将其作为二进制数据发送。然后,由于您的文件本质上是文本,您可以在客户端上阅读它并将其内容作为文本发送。我不知道你到底想要什么,也不知道它是如何用 axios 完成的——我没有用 axios 工作过。
标签: javascript reactjs express csv server