From 76fc7e72510b8004c25d5947669e9dde9568b6b4 Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Tue, 23 Jun 2026 21:53:49 +0200 Subject: [PATCH] Upload files via form chunks --- build-plugin.sh | 2 +- packages/u-navigator-2026.06.23.r047.tgz | Bin 32510 -> 0 bytes packages/u-navigator-2026.06.23.r048.tgz | Bin 0 -> 33030 bytes .../emhttp/plugins/u-navigator/api/upload.php | 38 +++++++++++ server/public/app.js | 64 +++++++++++------- u-navigator.plg | 4 +- 6 files changed, 82 insertions(+), 26 deletions(-) delete mode 100644 packages/u-navigator-2026.06.23.r047.tgz create mode 100644 packages/u-navigator-2026.06.23.r048.tgz diff --git a/build-plugin.sh b/build-plugin.sh index d991b9a..f7f042b 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -2,7 +2,7 @@ set -eu PLUGIN="u-navigator" -VERSION="2026.06.23.r047" +VERSION="2026.06.23.r048" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.06.23.r047.tgz b/packages/u-navigator-2026.06.23.r047.tgz deleted file mode 100644 index 5d302cf5e67ff70952f74f62fed880096b5d460c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32510 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 Zy-W`f>61R`lRn9w{{cV_OxXa^0suu8P#^#R diff --git a/packages/u-navigator-2026.06.23.r048.tgz b/packages/u-navigator-2026.06.23.r048.tgz new file mode 100644 index 0000000000000000000000000000000000000000..5eee4672f742d5abadcb136610fa135ce5e74463 GIT binary patch literal 33030 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

7c@P%YmJFaNzm-EDOIn-uL!@ zs$l^|ztmuDuNT=Ld=86#lNG?ShnFm{$OC^00@j0p$6tvwX0w3G@-W!Z^gWwaAHo9l ZVt0VpJ-cW3?4ESb{{br&h>`%@0syPUKMVi> 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 acc6832..a821d2d 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 @@ -7,6 +7,44 @@ if (!is_dir($target['path'])) { unav_error(400, 'Upload target must be a directory'); } +if (($_POST['uploadMode'] ?? '') === 'chunk') { + $relativeName = (string)($_POST['relativePath'] ?? ''); + $chunkIndex = filter_var($_POST['chunkIndex'] ?? null, FILTER_VALIDATE_INT); + $totalChunks = filter_var($_POST['totalChunks'] ?? null, FILTER_VALIDATE_INT); + $encoded = (string)($_POST['data'] ?? ''); + if ($relativeName === '' || $chunkIndex === false || $totalChunks === false || $chunkIndex < 0 || $totalChunks < 1 || $chunkIndex >= $totalChunks) { + unav_error(400, 'Invalid upload chunk'); + } + $destination = unav_prepare_upload_destination($target['path'], $relativeName); + $temporary = $destination['path'] . '.u-nav-upload'; + if ($chunkIndex === 0) { + @unlink($temporary); + } elseif (!is_file($temporary)) { + unav_error(400, 'Upload session not found'); + } + $data = base64_decode($encoded, true); + if ($data === false) { + unav_error(400, 'Invalid upload data'); + } + if (file_put_contents($temporary, $data, $chunkIndex === 0 ? LOCK_EX : FILE_APPEND | LOCK_EX) === false) { + unav_error(500, 'Could not write upload chunk'); + } + $complete = $chunkIndex === $totalChunks - 1; + if ($complete && !rename($temporary, $destination['path'])) { + @unlink($temporary); + unav_error(500, 'Could not finalize upload'); + } + unav_json([ + 'uploaded' => $complete ? [[ + 'name' => $destination['relative'], + 'size' => filesize($destination['path']) ?: 0, + ]] : [], + 'chunk' => $chunkIndex + 1, + 'totalChunks' => $totalChunks, + 'complete' => $complete, + ], $complete ? 201 : 202); +} + if (isset($_GET['relativePath']) || isset($_SERVER['HTTP_X_UNAV_RELATIVE_PATH'])) { $relativeName = (string)($_GET['relativePath'] ?? $_SERVER['HTTP_X_UNAV_RELATIVE_PATH']); $destination = unav_prepare_upload_destination($target['path'], $relativeName); diff --git a/server/public/app.js b/server/public/app.js index c29d2cd..69fcb9b 100644 --- a/server/public/app.js +++ b/server/public/app.js @@ -904,25 +904,37 @@ async function uploadFileList(win, files, targetPath) { const uploadItems = normalizeUploadItems(files); for (const [index, item] of uploadItems.entries()) { recordDebug('upload.file.request', { path: item.path, size: item.file.size, index: index + 1, total: uploadItems.length }); - const params = new URLSearchParams({ - path: targetPath, - relativePath: item.path - }); - const token = getCsrfToken(); - if (token) { - params.set('csrf_token', token); - recordDebug('csrf.attached', { length: token.length }); - } else { - recordDebug('csrf.missing', {}); - } - const response = await fetch(apiUrl(`upload.php?${params.toString()}`), { + await uploadFileChunked(targetPath, item.file, item.path); + recordDebug('upload.file.done', { path: item.path, index: index + 1, total: uploadItems.length }); + } + await loadExplorer(win, targetPath); +} + +async function uploadFileChunked(targetPath, file, relativePath) { + const chunkSize = 256 * 1024; + const totalChunks = Math.max(1, Math.ceil(file.size / chunkSize)); + let finalPayload = null; + for (let chunkIndex = 0; chunkIndex < totalChunks; chunkIndex += 1) { + const start = chunkIndex * chunkSize; + const chunk = file.slice(start, Math.min(file.size, start + chunkSize)); + const data = arrayBufferToBase64(await chunk.arrayBuffer()); + const body = new URLSearchParams(); + body.set('uploadMode', 'chunk'); + body.set('relativePath', relativePath); + body.set('chunkIndex', String(chunkIndex)); + body.set('totalChunks', String(totalChunks)); + body.set('data', data); + appendCsrf(body); + const response = await fetch(apiUrl(`upload.php?path=${encodeURIComponent(targetPath)}`), { method: 'POST', - headers: { 'Content-Type': 'application/octet-stream' }, - body: item.file + headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, + body }); const text = await response.text(); - recordDebug('upload.file.response', { - path: item.path, + recordDebug('upload.chunk.response', { + path: relativePath, + chunk: chunkIndex + 1, + totalChunks, status: response.status, ok: response.ok, contentType: response.headers.get('content-type'), @@ -931,18 +943,24 @@ async function uploadFileList(win, files, targetPath) { if (!response.ok) { throw new Error(text || `${response.status} ${response.statusText}`); } - let payload; try { - payload = JSON.parse(text); + finalPayload = JSON.parse(text); } catch (error) { throw new Error(`Upload lieferte keine JSON-Antwort: ${text.slice(0, 200) || response.headers.get('content-type') || 'leer'}`); } - if (!payload.uploaded?.length) { - throw new Error('Upload wurde vom Server nicht bestätigt.'); - } - recordDebug('upload.file.done', { path: item.path, index: index + 1, total: uploadItems.length }); } - await loadExplorer(win, targetPath); + if (!finalPayload?.uploaded?.length) { + throw new Error('Upload wurde vom Server nicht bestätigt.'); + } +} + +function arrayBufferToBase64(buffer) { + const bytes = new Uint8Array(buffer); + let binary = ''; + for (let index = 0; index < bytes.length; index += 0x8000) { + binary += String.fromCharCode(...bytes.subarray(index, index + 0x8000)); + } + return btoa(binary); } function normalizeUploadItems(files) { diff --git a/u-navigator.plg b/u-navigator.plg index e48cdde..bfc5118 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; -3c9e5a641720371ec7cee8bd70a32d8e +45fd0a1c4f8033d9daa56268f48742d4