#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’.