From dfd6bfec57a8d2d86270f15d295be3ced7a5c265 Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Tue, 23 Jun 2026 21:37:36 +0200 Subject: [PATCH] Fix dropped folder uploads --- build-plugin.sh | 2 +- packages/u-navigator-2026.06.23.r043.tgz | Bin 31376 -> 0 bytes packages/u-navigator-2026.06.23.r044.tgz | Bin 0 -> 32006 bytes .../emhttp/plugins/u-navigator/api/upload.php | 23 ++++- server/public/app.js | 84 ++++++++++++++++-- u-navigator.plg | 4 +- 6 files changed, 100 insertions(+), 13 deletions(-) delete mode 100644 packages/u-navigator-2026.06.23.r043.tgz create mode 100644 packages/u-navigator-2026.06.23.r044.tgz diff --git a/build-plugin.sh b/build-plugin.sh index 0dc293b..8eb7a79 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -2,7 +2,7 @@ set -eu PLUGIN="u-navigator" -VERSION="2026.06.23.r043" +VERSION="2026.06.23.r044" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.06.23.r043.tgz b/packages/u-navigator-2026.06.23.r043.tgz deleted file mode 100644 index f52afb97103df8329c603d16af381e37e6f7c26e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31376 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 XwEC|G>;Cu9e`3loAYK6VfdKt~8+zYR diff --git a/packages/u-navigator-2026.06.23.r044.tgz b/packages/u-navigator-2026.06.23.r044.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f725761efccd0053905703eefc5145fc886d23d8 GIT binary patch literal 32006 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 literal 0 HcmV?d00001 diff --git a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php index cf81f2a..cb6ae33 100644 --- a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php +++ b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php @@ -8,11 +8,16 @@ if (!is_dir($target['path'])) { } $uploaded = []; -foreach ($_FILES['files']['name'] ?? [] as $index => $name) { - if ($_FILES['files']['error'][$index] !== UPLOAD_ERR_OK) { +$names = unav_upload_array($_FILES['files']['name'] ?? []); +$errors = unav_upload_array($_FILES['files']['error'] ?? []); +$tmpNames = unav_upload_array($_FILES['files']['tmp_name'] ?? []); +$relativePaths = unav_upload_array($_POST['paths'] ?? []); +foreach ($names as $index => $name) { + if (($errors[$index] ?? UPLOAD_ERR_NO_FILE) !== UPLOAD_ERR_OK) { unav_error(400, 'Upload failed'); } - $safeName = unav_upload_safe_relative_path((string)$name); + $relativeName = $relativePaths[$index] ?? $name; + $safeName = unav_upload_safe_relative_path((string)$relativeName); $relativeParent = dirname($safeName); if ($relativeParent !== '.') { $parentCandidate = $target['path'] . '/' . $relativeParent; @@ -28,7 +33,7 @@ foreach ($_FILES['files']['name'] ?? [] as $index => $name) { if (!is_dir(dirname($destination['path']))) { unav_error(500, 'Could not create upload directory'); } - if (!move_uploaded_file($_FILES['files']['tmp_name'][$index], $destination['path'])) { + if (!move_uploaded_file($tmpNames[$index] ?? '', $destination['path'])) { unav_error(500, 'Could not store uploaded file'); } $uploaded[] = [ @@ -39,6 +44,16 @@ foreach ($_FILES['files']['name'] ?? [] as $index => $name) { unav_json(['uploaded' => $uploaded], 201); +function unav_upload_array($value): array { + if (is_array($value)) { + return array_values($value); + } + if ($value === null || $value === '') { + return []; + } + return [$value]; +} + function unav_upload_safe_relative_path(string $name): string { $parts = []; foreach (preg_split('#[/\\\\]+#', $name) ?: [] as $part) { diff --git a/server/public/app.js b/server/public/app.js index 6761892..1762d6b 100644 --- a/server/public/app.js +++ b/server/public/app.js @@ -879,19 +879,19 @@ async function loadExplorer(win, targetPath) { } async function handleDrop(event, win, targetPath) { + const uploadItems = await getDroppedUploadItems(event); recordDebug('html.drop', { targetPath, types: dataTransferTypes(event), - files: getDroppedFiles(event).map((file) => ({ name: file.name, size: file.size })) + files: uploadItems.map((item) => ({ name: item.path, size: item.file.size })) }); if (state.config.readOnly) { showError(new Error('Read-only mode ist aktiv.')); return; } - const files = getDroppedFiles(event); - if (files.length) { - await uploadFileList(win, files, targetPath); + if (uploadItems.length) { + await uploadFileList(win, uploadItems, targetPath); } } @@ -902,8 +902,10 @@ async function uploadFileList(win, files, targetPath) { } if (!files.length) return; const form = new FormData(); - for (const file of files) { - form.append('files', file, file.webkitRelativePath || file.name); + const uploadItems = normalizeUploadItems(files); + for (const item of uploadItems) { + form.append('files[]', item.file, item.file.name); + form.append('paths[]', item.path); } appendCsrf(form); await fetchChecked(apiUrl(`upload.php?path=${encodeURIComponent(targetPath)}`), { @@ -913,6 +915,19 @@ async function uploadFileList(win, files, targetPath) { await loadExplorer(win, targetPath); } +function normalizeUploadItems(files) { + return files.map((item) => { + if (item?.file && item?.path) { + return item; + } + const file = item; + return { + file, + path: file.webkitRelativePath || file.name + }; + }).filter((item) => item.file && item.path); +} + async function createJob(type, source, destination = null, refreshWindowIds = [], extra = {}) { if (['move', 'copy', 'permissions'].includes(type) && isReadOnly()) { showError(new Error('Read-only mode ist aktiv.')); @@ -976,6 +991,63 @@ function hasDropPayload(event) { return types.includes('Files') || getDroppedFiles(event).length > 0; } +async function getDroppedUploadItems(event) { + const entries = getDroppedEntries(event); + if (entries.length) { + const items = []; + for (const entry of entries) { + items.push(...await readDroppedEntry(entry, '')); + } + if (items.length) { + return items; + } + } + return getDroppedFiles(event).filter((file) => file.size > 0 || file.type || file.name.includes('.')).map((file) => ({ + file, + path: file.webkitRelativePath || file.name + })); +} + +function getDroppedEntries(event) { + try { + return [...(event.dataTransfer?.items || [])] + .map((item) => item.webkitGetAsEntry?.()) + .filter(Boolean); + } catch (error) { + recordDebug('dataTransfer.entries.error', serializeError(error)); + return []; + } +} + +async function readDroppedEntry(entry, parentPath) { + const path = parentPath ? `${parentPath}/${entry.name}` : entry.name; + if (entry.isFile) { + const file = await new Promise((resolve, reject) => entry.file(resolve, reject)); + return [{ file, path }]; + } + if (!entry.isDirectory) { + return []; + } + const reader = entry.createReader(); + const children = await readAllDirectoryEntries(reader); + const results = []; + for (const child of children) { + results.push(...await readDroppedEntry(child, path)); + } + return results; +} + +async function readAllDirectoryEntries(reader) { + const entries = []; + while (true) { + const batch = await new Promise((resolve, reject) => reader.readEntries(resolve, reject)); + if (!batch.length) { + return entries; + } + entries.push(...batch); + } +} + function showError(error) { const debug = recordDebug('error.shown', serializeError(error)); const message = error?.message || String(error); diff --git a/u-navigator.plg b/u-navigator.plg index 4742172..725abc7 100644 --- a/u-navigator.plg +++ b/u-navigator.plg @@ -1,7 +1,7 @@ - + @@ -24,7 +24,7 @@ https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package; -1228bd58fd43942593fe8a6c383f427a +3d681de8838b4c51cbade67d1ad0cb57