как сохранить декодирование изображения base64 в общую папку в laravel - PullRequest
0 голосов
/ 06 февраля 2019

Я получаю изображение в формате String base64, и я хочу декодировать эту строку в изображение и сохранить ее в общую папку в laravel.

Это мой контроллер:

//decode string base64 image to image 
$image = base64_decode($request->input('ttd'));
//create image name
$photo_name = time().'.png';
$destinationPath = public_path('/uploads');
//save image to folder
$image->move($destinationPath, $photo_name);
$img_url = asset('/uploads'.$photo_name);


$data = new Transaction();
$data->transaction_id = $request->input('fa_transaction_id');
$data->user_id = $request->input('userid');
$data->photo_name = $photo_name;
$data->photo_url = $img_url;
$data->save();

, когда я пытаюсь отразить $ image, я получил значение декодирования, а также для $ photo_name я тоже получил значение, но когда функцияработает я получил эту ошибку

Call to a member function move() on string

как исправить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Сохранение изображения в базе данных не рекомендуемый способ хранения изображения в БД, причина в увеличении скорости памяти, Правильный способ - просто сохранить ссылку на него.
В любом случае, вы можете сохранить свое изображение в base64 с помощью этой строки кода.
Получить правильное изображение по пути на вашем сервере, а не по ссылке в $path.

<?php
    // Base 64 transform image
    $path = __DIR__ .'/myfolder/myimage.png';
    $type = pathinfo($path, PATHINFO_EXTENSION);
    $data = file_get_contents($path);
    $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
    echo $base64;
0 голосов
/ 06 февраля 2019
//Controller

use Illuminate\Support\Facades\Storage;

//Inside method

    $image = $request->image;  // your base64 encoded
    $image = str_replace('data:image/png;base64,', '', $image);
    $image = str_replace(' ', '+', $image);
    $imageName = str_random(10) . '.png';

    Storage::disk('local')->put($imageName, base64_decode($image));

Кроме того, убедитесь, что ваш диск local настроен так же, как в /config/filesystems.php

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
    ]

При этом файл будет сохранен в каталоге /storage/app/public.

Не забудьте написать php artisan storage:link, чтобы сделать файлы из этого каталога доступными в каталоге /public, чтобы пользователи могли их извлекать.

...