DropZone 在 Windows 10 和带有 MIME "text/csv" 过滤器集的 ChromeOS 上不拾取 CSV 文件

DropZone Does not pick up CSV files on Windows 10 and ChromeOS with MIME "text/csv" filter set

当 运行、在 Linux 和 macOS 上进行测试和调试时 - 标准浏览器文件选择器乐于接受 MIME 类型 "text/csv" 进行过滤使用 DropZone 上传的 CSV 文件。

Windows 10(即使有 Chrome)和 ChromeOS(当然还有 Chrome)对此并不满意。

而不是像下面这样使用 MIME 过滤器:

<Dropzone
            accept="text/csv"
            onDrop={(accepted, rejected) => { this.setState({ accepted, rejected }); }}
          >

改为使用文件扩展名过滤器:

<Dropzone
            accept=".csv"
            onDrop={(accepted, rejected) => { this.setState({ accepted, rejected }); }}
          >

此代码直接从位于 https://react-dropzone.js.org/

的 'Accept' 示例中提取

完整的工作修改示例:

class Accept extends React.Component {
  constructor() {
    super()
    this.state = {
      accepted: [],
      rejected: []
    }
  }

  render() {
    return (
      <section>
        <div className="dropzone">
          <Dropzone
            accept=".csv"
            onDrop={(accepted, rejected) => { this.setState({ accepted, rejected }); }}
          >
            {({ getRootProps, getInputProps }) => (
              <div {...getRootProps()}  className="dropzone">
                <input {...getInputProps()} />
                <p>Try dropping some files here, or click to select files to upload.</p>
                <p>Only *.jpeg and *.png images will be accepted</p>
              </div>
            )}
          </Dropzone>
        </div>
        <aside>
          <h4>Accepted files</h4>
          <ul>
            {
              this.state.accepted.map(f => <li key={f.name}>{f.name} - {f.size} bytes</li>)
            }
          </ul>
          <h4>Rejected files</h4>
          <ul>
            {
              this.state.rejected.map(f => <li key={f.name}>{f.name} - {f.size} bytes</li>)
            }
          </ul>
        </aside>
      </section>
    );
  }
}

<Accept />

Windows 将 .csv 文件识别为不同类型,因此将您的接受字符串更改为以下内容:

accept=".csv, application/vnd.ms-excel, text/csv"

希望对您有所帮助!