dir(); $items = []; foreach (glob($d . '/*.{jpg,jpeg,png,gif,webp,svg}', GLOB_BRACE) as $f) { $name = basename($f); $items[] = ['name' => $name, 'url' => site_url('assets/uploads/' . $name)]; } echo json_encode(['items' => $items]); } /** 上传素材(JSON) POST admin/media/upload */ public function upload() { header('Content-Type: application/json; charset=utf-8'); if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !csrf_check()) { echo json_encode(['ok' => false, 'msg' => '请求无效']); return; } $path = $this->uploadFile('file'); if (!$path) { echo json_encode(['ok' => false, 'msg' => '上传失败(仅支持 jpg/png/gif/webp/svg)']); return; } echo json_encode(['ok' => true, 'name' => basename($path), 'url' => site_url($path)]); } /** 删除素材 POST admin/media/delete/{name} 或 POST admin/media/delete + name 字段 */ public function delete($name = null) { header('Content-Type: application/json; charset=utf-8'); if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !csrf_check()) { echo json_encode(['ok' => false, 'msg' => '请求无效']); return; } $name = basename($name ?? ($_POST['name'] ?? '')); if ($name === '' || $name === '.' || $name === '..') { echo json_encode(['ok' => false, 'msg' => '参数缺失']); return; } $file = $this->dir() . '/' . $name; if (is_file($file) && @unlink($file)) { echo json_encode(['ok' => true]); } else { echo json_encode(['ok' => false, 'msg' => '删除失败']); } } }