文件还在测试中

This commit is contained in:
2026-08-08 15:53:53 +08:00
parent 5f1e7adb64
commit 8101177cb5
241 changed files with 18074 additions and 22 deletions
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace App\Controllers\Admin;
/**
* 素材库:图片上传 / 列表 / 删除
* 文件存于 public/assets/uploads,前后台通用(静态资源由框架直出)。
*/
class MediaController extends AdminController
{
private function dir(): string
{
$d = BASE_PATH . '/public/assets/uploads';
if (!is_dir($d)) mkdir($d, 0755, true);
return $d;
}
/** 素材列表(JSON GET admin/media */
public function index()
{
header('Content-Type: application/json; charset=utf-8');
$d = $this->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' => '删除失败']);
}
}
}