Фильтр принятых файлов Dropzone

#javascript #reactjs #react-dropzone

#javascript #reactjs #реагировать-dropzone

Вопрос:

Я пытаюсь создать загрузку файлов для файлов STL. Приведенный ниже код работает так же, как и в функции onDrop в консоли.журнал показывает пустой массив для всех других типов файлов и файлов, если они имеют тип STL. Итак, он делает то, что должен делать.

Однако строка

 {isDragReject amp;amp; 'File type not accepted, sorry!'}
 

всегда срабатывает, даже для файлов stl. Что, безусловно, смутило бы пользователя.

 import React, { useCallback } from 'react';
import Dropzone, { useDropzone } from 'react-dropzone';

const FileDropzone = () => {
const maxSize = 100000000;

const onDrop = useCallback((acceptedFiles) => {
    console.log(acceptedFiles);
}, []);

const {
    isDragActive,
    getRootProps,
    getInputProps,
    isDragReject,
    acceptedFiles,
    rejectedFiles,
} = useDropzone({
    onDrop,
    accept: '.stl',
    minSize: 0,
    maxSize,
});

const isFileTooLarge =
    rejectedFiles amp;amp;
    rejectedFiles.length > 0 amp;amp;
    rejectedFiles[0].size > maxSize;

return (
    <div className="container text-center mt-5">
        <div {...getRootProps()}>
            <input {...getInputProps()} />
            {!isDragActive amp;amp; 'Click here or drop a file to upload!'}
            {isDragActive amp;amp; !isDragReject amp;amp; "Drop it like it's hot!"}
            {isDragReject amp;amp; 'File type not accepted, sorry!'}
            {isFileTooLarge amp;amp; (
                <div className="text-danger mt-2">File is too large.</div>
            )}
        </div>
    </div>
);
};

export default FileDropzone;
 

Комментарии:

1. пожалуйста, предоставьте рабочий фрагмент, если у вас есть фрагмент, который четко показывает вашу проблему, он решит вашу проблему намного быстрее, чем без фрагмента, например, вы можете создать фрагмент из code sandbox

Ответ №1:

Это ошибка, пожалуйста, смотрите подробности здесь: https://github.com/react-dropzone/react-dropzone/issues/888

Решение: понизить уровень до предыдущей версии DropZone.