Как загрузить изображение холста в хранилище на Laravel

#ajax #laravel #canvas

#ajax #laravel #холст

Вопрос:

У меня есть небольшой проект laravel, которому необходимо загрузить файл с холста в хранилище / uploads / imgs. Это мой холст

 <body>
    <canvas id="canvas"></canvas>
</body>
  

Мне может понадобиться ajax для клиента, как показано ниже

 var canvas = document.getElementById('image');
    var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "/route-here",
    data: { 
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved'); 
});
  

Но я не уверен в кодировании на стороне сервера (Laravel). Любой совет или руководство были бы с благодарностью приняты, спасибо.

Комментарии:

1. id='image' или var canvas = document.getElementById('canvas'); . Измените его.

Ответ №1:

Я не использую Canvas, но делаю небольшую загрузку файлов… Вы можете использовать стандартные методы php для перемещения файлов в Laravel… Кроме того, хотя вы определенно можете использовать AJAX, вы также можете выполнить это с помощью формы…

Пример того, как я обрабатываю загрузку в своем контроллере:

 if ($request->file('image')) {

    $asset = $request->file('image')->getClientOriginalName();

        $request->file('image')->move(
               base_path() . '/storage/app/uploads/imgs/', $asset
        );

}
  

Я бы также, как правило, выполнил проверку path (как будто ваш path не существует — он завершится неудачей), дублирует имя файла и т. Д. Перед вызовом метода -> move.

Лучший способ в долгосрочной перспективе — узнать, как работает класс хранилища Laravel, который требует меньше кода, но требует правильной настройки «дисков», а также включения класса в ваш контроллер и т.д.

Надеюсь, что вышесказанное поможет указать вам правильное направление…

Комментарии:

1. Спасибо, я уже решил. Это мой код $newname = time().’.’.explode(‘/’,explode(‘:’,substr($ base64,0,strpos($ base64,’;’)))[1])[1]; Изображение:: создать ($request-> img)-> сохранить(public_path(‘storage/ uploads/treatment/’).$newname);

2. @joenpcnpcsolution не могли бы вы объяснить, откуда будет взят ‘$ base64’.