#reactjs #antd
#reactjs #antd
Вопрос:
<Form.Item
name="upload"
label="Upload"
valuePropName="fileList"
getValueFromEvent={normFile}
multiple="false"
>
<Upload accept=".csv" name="logo" multiple="false" action="/upload.do" listType="picture">
<Button icon={<UploadOutlined />}>Click to upload</Button>
</Upload>
</Form.Item>
- Я не хочу разрешать пользователю вводить только один файл.
- Также как прочитать этот файл csv после загрузки и отправить на серверную часть (только параметры)?
допускается использование нескольких файлов, как показано ниже
Комментарии:
1. вы столкнулись с какой-либо ошибкой в этом коде. пожалуйста, укажите вопрос
2. @sharunkk на самом деле в этом случае загрузка позволяет пользователю вводить несколько файлов, однако я хочу, чтобы был разрешен только один файл
3. взгляните. codepen.io/pen /… . ни одна загрузка файлов не ограничена другим способом . вы можете сделать это
fileList = fileList.slice(-1);
или ограничить количество файлов с помощью оператора condition4. @sharunkk вы можете изменить ссылку, я думаю, это неверно, спасибо
Ответ №1:
Решение вашего первого вопроса очень простое. API компонента загрузки Ant Design (сейчас?) содержит maxCount
, Который ограничивает / контролирует количество загружаемых файлов.
Установите для него значение 1, и это ограничит количество загружаемых файлов только 1. Если пользователь выберет другой файл, он заменит выбранный ранее.
Итак, в итоге у вас должно получиться что-то вроде этого:
<Form.Item
name="upload"
label="Upload"
valuePropName="fileList"
getValueFromEvent={normFile}
multiple="false">
<Upload
accept=".csv"
name="logo"
multiple="false"
action="/upload.do"
listType="picture"
maxCount={1} //this is what limits the number of files uploaded
>
<Button icon={<UploadOutlined />}>
Click to upload
</Button>
</Upload>
</Form.Item>
Ответ №2:
Я решаю эту проблему с помощью Css, проверяю длину массива списка, если true, определяю имя класса для кнопки загрузки, которая не позволяет нажимать.
const [list, setList] = useState(null);
<Dragger //its one of antd upload components
{...settings}
className={list?.length ? 'blocked' : undefined}
>
.blocked {
pointer-events: none;
opacity: 0.5;
}