diff --git a/frontend/src/lib/components/forms/books-upload.svelte b/frontend/src/lib/components/forms/books-upload.svelte index 1d29d6e..a27375e 100644 --- a/frontend/src/lib/components/forms/books-upload.svelte +++ b/frontend/src/lib/components/forms/books-upload.svelte @@ -35,7 +35,11 @@ let formEl = $state(); const onUpload: FileDropZoneProps['onUpload'] = async (uploadedFiles) => { - uploadBooks.fields.files.set([...Array.from(files), ...uploadedFiles]); + // Rename files to use webkitRelativePath so directory structure is preserved through form submission + const renamedFiles = uploadedFiles.map(f => + new File([f], f.webkitRelativePath || f.name, { type: f.type }) + ); + uploadBooks.fields.files.set([...Array.from(files), ...renamedFiles]); if (autoUploadOnDrop && files.length > 0) { await tick(); formEl?.requestSubmit();