我是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()
方法。
如何在此处检查添加自定义验证器以检查文件名的长度?