Как прочитать CSV-файл и загрузить в реагировать js Post метода? - PullRequest
0 голосов
/ 24 февраля 2020

Я новичок, чтобы отреагировать 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>
...