Revert "v0.0.47: выбор целой папки (webkitdirectory) — рекурсивно, как раскрытие ZIP"
Deploy drhider / validate (push) Canceled after 0s
Deploy drhider / validate (push) Canceled after 0s
This reverts commit b5a14cfc3d.
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
# v0.0.47 — Выбор целой папки (рекурсивно, как раскрытие ZIP) — 2026-08-19
|
||||
|
||||
## Проблема
|
||||
Нативный `<input type="file">` (`site/templates/index.html:133`) не умеет выбирать
|
||||
папку целиком: клик по папке просто «входит» внутрь. Нужно выбирать целую папку
|
||||
и рекурсивно забирать все файлы — как при раскрытии архива.
|
||||
|
||||
## Решение
|
||||
- Второй `<input type="file" id="folderInput" webkitdirectory multiple>` + кнопка
|
||||
«📁 Выбрать папку» (вызов `folderInput.click()`).
|
||||
`webkitdirectory` взаимоисключающ с обычным выбором файлов на одном input —
|
||||
поэтому отдельный input, а не переключатель.
|
||||
- Браузер сам отдаёт ВСЕ файлы папки рекурсивно (включая подпапки) с полем
|
||||
`file.webkitRelativePath`. Имя добавляемого файла = `webkitRelativePath`
|
||||
(структура папок сохраняется до итогового ZIP, как у архива сохраняется
|
||||
внутренний `e.name`).
|
||||
- Обработка — та же логика, что у раскрытия ZIP (`listZipFiles`):
|
||||
- `.zip` → рекурсивное раскрытие (вложенные zip тоже);
|
||||
- документы `.pdf .doc .docx .txt .md` → в таблицу;
|
||||
- прочее (картинки и т.п.) → пропускается.
|
||||
- Сортировка входящих файлов по `webkitRelativePath` — детерминированный порядок.
|
||||
|
||||
## Файлы
|
||||
- `site/templates/index.html`
|
||||
- CSS: `.folder-btn` (полная ширина), `#folderInput { display:none }`
|
||||
- HTML: скрытый `#folderInput` + кнопка в `.file-input-wrap`
|
||||
- JS: `const folderInput`, обработчик `change` (рекурсия+фильтр+имена с путями)
|
||||
- `resetAll()` и `load` — сброс `folderInput.value`
|
||||
- `site/app.py` — VERSION 0.0.46 → 0.0.47
|
||||
|
||||
## Бэкенд — не менялся
|
||||
- `extract_text` (drhider/extractor.py:204) берёт расширение через
|
||||
`os.path.splitext` — пути в имени не мешают.
|
||||
- `build_zip` (drhider/builder.py) пишет `ZipInfo` с путями как есть;
|
||||
`_resolve_name` дедуплицирует по полному имени — одноимённые файлы в разных
|
||||
подпапках не сталкиваются.
|
||||
- Аплоад идёт из массива `sf` (`uploadFiles`), а не из `fi.files` — файлы из
|
||||
папки уходят на бэк обычным путём.
|
||||
|
||||
## Проверка
|
||||
1. «Выбрать папку» → папка с подпапками, вложенными .zip и картинками →
|
||||
в таблице только документы, рекурсивно; .zip раскрыт; картинки пропущены;
|
||||
имена с путями.
|
||||
2. Обфускация → скачать ZIP → вложенность папок сохранена, всё обфусцировано.
|
||||
3. Регрессия: обычный «Выбрать файлы» работает как раньше.
|
||||
Reference in New Issue
Block a user