/
ildar8919
/
Mediahosting
Обзор
Документация
Войти
/
ildar8919
/
Mediahosting
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/Helpers/ImageHandler.php
47 строк
2 KB
Ildar
Добавление новых файлов
18 янв 2025, 15:18
18 янв 2025, 15:18
a5e5342
Код
Авторство
О чём код?
<?php namespace App\Helpers; use Illuminate\Support\Facades\Storage; class ImageHandler { public static function saveBase64Image($base64String, $directory = 'img', $filename = null) { // Проверка на наличие префикса data:image if (preg_match('/^data:image\/(\w+);base64,/', $base64String, $type)) { // Удаляем префикс $base64String = substr($base64String, strpos($base64String, ',') + 1); $type = strtolower($type[1]); // Получаем тип изображения } else { // Если префикса нет, предполагаем, что строка уже является чистым Base64 // Попробуем определить тип изображения по расширению файла if (preg_match('/\.(jpg|jpeg|png|gif)$/i', $filename ?? '', $matches)) { $type = strtolower($matches[1]); } else { throw new \Exception('Unsupported image type or filename not provided'); } } // Проверка допустимых типов изображений if (!in_array($type, ['jpg', 'jpeg', 'png', 'gif'])) { throw new \Exception('Unsupported image type'); } // Декодирование строки Base64 $data = base64_decode($base64String); if ($data === false) { throw new \Exception('Base64 decode failed'); } // Генерация имени файла, если не указано if (!$filename) { $filename = uniqid() . '.' . $type; // Генерируем уникальное имя файла } // Сохранение изображения в указанную директорию Storage::disk('public')->put("$directory/$filename", $data); return "$directory/$filename"; // Возвращаем путь к сохраненному изображению } }