'upload.json', 'method' => 'POST', 'action' => function () { if ($uploads = kirby()->request()->files()) { $pageUri = kirby()->request()->query()->get('pageUri'); $page = page($pageUri); $alerts = []; $success = ''; $newFiles = []; foreach ($uploads->get('images') as $upload) { // check for duplicate $files = $page->files(); $duplicates = $files->filter(function ($file) use ($upload) { $pos = strpos($file->filename(), '_'); $originalSafename = substr($file->filename(), $pos + 1); return $originalSafename === F::safeName($upload['name']) && $file->mime() === $upload['type'] && $file->size() === $upload['size']; }); if ($duplicates->count() > 0) { $alerts[$upload['name']] = "The file already exists"; continue; } try { $name = crc32($upload['name'].microtime()). '_' . $upload['name']; $newFiles[] = $page->createFile([ 'source' => $upload['tmp_name'], 'filename' => $name, 'template' => 'default', 'content' => [ 'date' => date('Y-m-d h:m') ] ]); $success = 'Your file upload was successful'; } catch (Exception $e) { $alerts[$upload['name']] = $e->getMessage(); } } $images = array_map(function ($file) { return $file->url(); }, $newFiles); return compact('images', 'alerts', 'success'); } return [ 'error' => 'Aucun fichier reçu.', ]; } ];