From 9da650c547d9972a8d9fd531643c6e0390382a74 Mon Sep 17 00:00:00 2001 From: Jarkko Saltiola Date: Fri, 16 May 2025 07:51:28 +0300 Subject: [PATCH] Add support for preloading files in nested directories Allow `PhpWeb` constructor's `files` parameter and tag attribute `data-files` to preload files with nested directory structure. --- source/PhpBase.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/PhpBase.js b/source/PhpBase.js index fe9a6fa7..1d24854a 100644 --- a/source/PhpBase.js +++ b/source/PhpBase.js @@ -83,6 +83,21 @@ export class PhpBase extends EventTarget php.FS.mkdir('/preload'); } + // Make sure folder structure exists before preloading files + files.forEach(fileDef => { + const segments = fileDef.parent.split('/'); + let currentPath = ''; + for (const segment of segments) { + if (!segment) continue; + + currentPath += segment + '/'; + if (!php.FS.analyzePath(currentPath).exists) { + console.log("create dir " + currentPath); + php.FS.mkdir(currentPath); + } + } + }); + await Promise.all(files.concat(extraFiles).map( fileDef => new Promise(accept => php.FS.createPreloadedFile( fileDef.parent,