React Tensorflow JS загрузить файл CSV, загруженный пользователем - PullRequest
0 голосов
/ 25 мая 2020

Я могу загружать файлы csv с внешнего URL-адреса, но когда я пытаюсь загрузить файл, который пользователь загрузил в Интернет, он показывает пустой объект.

Кажется, что объект загружен, но вы можете `не получить доступ к информации каким-либо образом. Решения, которые я нашел в Интернете, заключались в настройке серверов, но я не хотел этого делать. Я хочу иметь только клиентское веб-приложение с tenorflow JS.

main. js:

export default function Main() {
  const [archivo, setArchivo] = useState();

  const cargarArchivo = (archivo) => {
    setArchivo(archivo);
  };

  async function realizarCalculos() {
    await preprocesamiento(archivo);
  }

  return (
    <div>
      <Dropzone cargarArchivo={cargarArchivo} />
      <Button
        onClick={realizarCalculos}
        style={{ margin: "5vh" }}
        variant="outlined"
      >
        Calcular Caudales
      </Button>
    </div>
  );
}

Dropzone. js:

class Dropzone extends Component {
  constructor(props) {
    super(props);
    this.state = {
      files: [],
    };
  }
  handleChange(files) {
    this.props.cargarArchivo(files[0]);
    this.setState({
      files: files,
    });
  }
  render() {
    return (
      <DropzoneArea
        acceptedFiles={[".csv"]}
        onChange={this.handleChange.bind(this)}
      />
    );
  }
}

export default Dropzone;

Тензорный поток JS:

    import * as tf from "@tensorflow/tfjs";   

    export async preprocesamiento(archivo){ 
        const csvDataset = tf.data.csv(archivo.path);
    }

1 Ответ

0 голосов
/ 25 мая 2020

Tensorflow JS tf.data.csv работает с fetch под капотом. Это означает, что вы не можете загружать локальные файлы, см. этот вопрос . Я решил проблему, создав объект URL-адреса с классом URL и передав URL-адрес в tenorflow:

import * as tf from "@tensorflow/tfjs";   

export async preprocesamiento(archivo){ 
    const url = URL.createObjectURL(archivo);
    const csvDataset = tf.data.csv(url);
}
...