Я новичок, чтобы отреагировать js, и я пытаюсь прочитать CSV-файл и загрузить весь контент в бэкэнд API.
Я могу прочитать CSV-файл, и я также могу распечатать его содержимое в console.log, но когда я пытаюсь опубликовать тот же контент, он не загружается.
Я не знаю, где ошибка. Вот мой код:
- используя эту функцию, я могу прочитать файл и просмотреть все детали в консоли, мне нужно поместить csv
в handlesubmit
функцию
read(e) {
const reader = new FileReader();
const csv1 = e.target.files[0];
reader.readAsText(csv1);
reader.onload = function(e) {
var csv = e.target.result;
// this.setState({
// csv
// });
};
}
- эту это форма функции handleSubmit, куда я должен загрузить файл
handleSubmit(e) {
e.preventDefault();
let authToken = localStorage.getItem("Token");
const reader = new FileReader();
reader.onload = () => {
csv.parse(reader.result, (err, data) => {
var userList = [];
const csv = data;
const newUser = {
csv: csv
};
userList.push(newUser);
});
};
const data = {
cost_type: this.state.cost_type,
invoice_number: this.state.invoice_number,
csv: this.state.csv, // this is name where i need to upload all csv file content
mapping: { ...this.state.mapping },
start_row: this.state.start_row
}
axios({
method: "post",
url: `https://digitalfleet.eu/api/1/costs/upload/`,
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: "Bearer " + JSON.parse(authToken)
},
data
})
.then(res => {
this.setState({
cost_type: null,
invoice_number: "",
csv: "",
mapping: {
date: "",
car: "",
car_vin: "",
car_plate_number: "",
car_mileage: "",
value: "",
invoice_number: "",
cost_type: "",
description: "",
net_value: "",
quantity: ""
},
start_row: null
});
console.log("success")
})
.catch(err => {
console.log(err);
});
}
- это поле ввода
<div class="upload-btn-wrapper">
<button class="btn112" style={{ fontSize: "16px" }}>
selectfile
</button>
<input
type="file"
name="csv"
onChange={this.read.bind(this)}
/>
</div>