Реактивная проверка ввода при загрузке CSV - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь работать с модулем, который я нашел на github для реакции. По сути, модуль принимает CSV-файлы и преобразует их в JSON, это здорово! Однако я пытаюсь немного улучшить его, добавив некоторую проверку входных данных. Если вы загрузите какой-либо файл, кроме CSV, модуль обработает его и, как правило, потерпит неудачу (Представьте себе, что вы пытаетесь преобразовать содержимое файла jpeg в json .... это не очень хорошо)

Я нашел строку, где происходит ввод файла, и попытался изменить его, чтобы он принимал только файлы CSV. Частично это сработало, потому что, когда я зашел на страницу и мне было предложено загрузить файл, расширение файла по умолчанию, которое искали в проводнике, было csv, а все остальные файлы были скрыты. Однако я все еще был в состоянии загрузить любой тип файла по своему выбору, несмотря на установку acccept = '.csv'

Я прикрепил код ниже. Мне интересно, что еще я могу сделать, чтобы запретить пользователю загружать файлы других типов, кроме csv, я думал, что у меня это изменилось при принятии значения типа ввода, но я не думаю.

<code>import React from 'react'
import { render } from 'react-dom'
import CsvParse from '../../src'

class Demo extends React.Component {
  constructor() {
    super()

    this.state = {
      data: null,
      error: null,
    }
  }

  handleData = data => {
    this.setState({ data })
  }

  handleError = error => {
    this.setState({ error })
  }

  render() {
    const keys = [
      'Loc_num',
      'Toll Free Number',
      'Ring to Number',
      'Description',

    ]

    return (
      <div>
        <h1>Demo React Csv Parse</h1>

        <CsvParse
          keys={keys}
          onDataUploaded={this.handleData}
          onError={this.handleError}
          render={onChange => <input type="file" accept=".csv" onChange={onChange} />}
        />

        {this.state.data && (
          <pre>{JSON.stringify(this.state.data, null, 2)}
)} {this.state.error && (
{JSON.stringify(this.state.error, null, 2)}
)} ) } } render (, document.querySelector ('# demo'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...