在react-dropzone中验证文件名长度

时间:2018-06-07 17:27:48

标签: reactjs dropzone.js react-dropzone

我是React的初学者。我正在尝试实现一个Dropzone(使用react-dropzone库),它可以检查为文件的大小和文件名长度而删除的文件。大小检查验证由react-dropzone库本地提供。如何在此处实现自定义验证器,同时检查文件名的长度?

以下是我的dropzone目前的样子:

export class AttachmentForm extends React.Component {
constructor() {
    super();
    this.state = {
      error: {hasError: false},
      shown: true
    };
  };

onDrop = (files) => {
    if (files.length === 1) {
    // hook to call API to upload attachment
    }
  };

onDropAccepted = (acceptedFiles) => {
    this.setState({...this.state, error: {hasError: false}})
  };

onDropRejected = (rejectedFiles) => {
    const file = rejectedFiles[0];
    if (file.size > 10000000) {
      this.setState({...this.state, error: { hasError: true, msg: "File size too large" }});
    } else if (file.name.length < 255) {
      this.setState({...this.state, error: { hasError: true, msg: "Filename too long" }});
    } else {
      this.setState({...this.state, error: { hasError: true, msg: "An unknown error occurred" }});
    }
  };

render() {
  return (
  <Dropzone
   className="inner-dropzone panel-body"
   multiple={false}
   maxSize={MAX_UPLOAD_SIZE}
   disablePreview={true}
   onDrop={this.onDrop}
   onDropAccepted={this.onDropAccepted}
   onDropRejected={this.onDropRejected}>
)};

正如我之前提到的,dropzone库会检查文件大小。基于此,它配置acceptedFiles / rejectedFiles数组,然后调用我在此处配置的onDropAccepted()onDropRejected()方法。

如何在此处检查添加自定义验证器以检查文件名的长度?

0 个答案:

没有答案