Как сделать Select Directory с помощью React?

Мне нужно загрузить все файлы из папки на сервер. Я пытаюсь реализовать окно выбора каталога, а не выбрать файл.

Нормальный способ, как:

<input type"file" webkitdirectory directory/>

У меня не сработало, и показало окно выбора файла.

Но когда я создал пустой обычный HTML-файл с этим тегом ввода, он работал нормально. Кто-нибудь знает, как реализовать решение с помощью React?

Спасибо!

1 ответ

Решение

Попробуй бхептиньх.

<input directory="" webkitdirectory="" type="file" />

В React 17 с Typescript, если вы используете useRef Hook, лучше всего расширить React HTMLAttributes (в том же файле ваших входных данных), а затем просто добавить атрибуты directory и webkitdirectory во входной тег как

import * as React from "react";

export const ImportForm: React.FunctionComponent<FormProps> = (props) => {
const folderInput= React.useRef(null);

return (
<>
           <div className="form-group row">
              <div className="col-lg-6">
                <label>Select Folder</label>
              </div>
              <div className="col-lg-6">
                <input
                  type="file"  
                  directory=""
                  webkitdirectory=""                
                  className="form-control"
                  ref={folderInput}
                />
              </div>
            </div>
</>)
};

declare module 'react' {
  interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
    // extends React's HTMLAttributes
    directory?: string;        // remember to make these attributes optional....
    webkitdirectory?: string;
  }
}
Другие вопросы по тегам