Вам нужно создать новое изображение с использованием данных BLOB-объектов и сохранить их.
Во-первых, вам нужно получить фактическое содержимое изображения, которое будет после: data:image/png;base64,
или data:image/jpeg;base64,
(Вы можете использовать первую часть большого двоичного объекта, чтобы получить тип расширения, чтобы позже можно было сохранить изображение, используя то же расширение.)
Это будет сделано:
$base64Str = substr($data, strpos($data, ",")+1);
Далее необходимо декодировать содержимое, как оно есть в base64
$file = base64_decode($base64Str);
Затем укажите путь для сохранения нового изображения. Вы можете использовать генератор случайных чисел в сочетании с текущей меткой времени, чтобы получить уникальное имя для каждого файла.
public function generateUniqueFileName($extension)
{
return md5(uniqid(rand(), true)) . '-' . md5(microtime()) . '.' $extension;
}
$fullPath = 'public/images/' . $this->generateUniqueFileName($extension);
Наконец, вы можете сохранить изображение по указанному пути:
Storage::put($fullPath, $file);