false, 'message' => 'Доступ запрещен']); exit(); } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['image'])) { $uploadDir = 'uploads/products/'; // Создаем директорию если не существует if (!file_exists($uploadDir)) { mkdir($uploadDir, 0777, true); } $allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']; $maxSize = 5 * 1024 * 1024; // 5MB $file = $_FILES['image']; // Проверка типа файла if (!in_array($file['type'], $allowedTypes)) { echo json_encode(['success' => false, 'message' => 'Допустимые форматы: JPEG, PNG, GIF, WebP']); exit(); } // Проверка размера if ($file['size'] > $maxSize) { echo json_encode(['success' => false, 'message' => 'Максимальный размер файла: 5MB']); exit(); } // Генерируем уникальное имя $extension = pathinfo($file['name'], PATHINFO_EXTENSION); $fileName = 'product_' . time() . '_' . rand(1000, 9999) . '.' . $extension; $filePath = $uploadDir . $fileName; if (move_uploaded_file($file['tmp_name'], $filePath)) { echo json_encode([ 'success' => true, 'url' => $filePath, 'name' => $fileName ]); } else { echo json_encode(['success' => false, 'message' => 'Ошибка загрузки файла']); } } else { echo json_encode(['success' => false, 'message' => 'Файл не получен']); } ?>