antd组件库upload组件上传后依旧提示rules
时间: 2023-07-28 17:12:17 浏览: 152
antd组件库的Upload组件上传文件后,如果还提示规则验证失败,可能是因为您设置了规则验证函数(rules)但是没有正确地处理上传文件的情况。您可以在规则验证函数中增加对上传文件的判断。例如,在上传图片时,您可以通过判断文件类型和文件大小来进行验证。具体的代码实现可以参考下面的示例:
```jsx
<Form.Item
name="avatar"
label="Avatar"
rules={[
{
required: true,
message: 'Please upload your avatar',
},
({ getFieldValue }) => ({
validator(_, file) {
const maxSize = 2 * 1024 * 1024; // 2MB
const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJPG) {
return Promise.reject('You can only upload JPG/PNG file!');
} else if (file.size > maxSize) {
return Promise.reject(`Image must smaller than ${maxSize / 1024 / 1024}MB!`);
} else {
return Promise.resolve();
}
},
}),
]}
valuePropName="fileList"
getValueFromEvent={normFile}
>
<Upload name="avatar" action="/upload.do" listType="picture">
<Button icon={<UploadOutlined />}>Click to upload</Button>
</Upload>
</Form.Item>
```
在这个示例中,我们设置了一个规则验证函数,它会验证上传的文件是否是JPG或PNG格式,以及文件大小是否小于2MB。如果验证失败,会返回一个Promise.reject(),提示错误信息。如果验证通过,会返回一个Promise.resolve(),表示验证成功。这样,在上传文件后,就会先进行规则验证,如果验证通过,才会提交表单数据。
阅读全文