Предотвращение состояния гонки при сохранении изображений из Fabric.js с использованием laravelPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Предотвращение состояния гонки при сохранении изображений из Fabric.js с использованием laravel

Сообщение Anonymous »


У меня есть форма, которая содержит ввод в виде текста, в форме также есть изображение, которое можно нарисовать. После того, как пользователь завершит заполнение формы, включив в нее рисунок. Я сохраню изображение в общей папке с именем id_rekam_medis, которая создается случайным образом в контроллере и формирую данные в базе данных. Однако у меня есть проблема: похоже, у меня состояние гонки, когда изображение, которое я сохраняю в общей папке, имеет имя id_rekam_medis, отличное от id_rekam_medis, которое данные формы имеют в базе данных. Я попытался изменить порядок контроллера, чтобы сохранить изображение, а затем отправить форму. Однако это не работает. Есть ли другой способ решить эту проблему?

Это мой JavaScript-скрипт для отправки формы и сохранения изображений

function saveCanvas() { var CanvasData = Canvas.toDataURL("изображение/png"); вернуть новое обещание (функция (разрешить, отклонить) { $.ajax({ тип: «ПОСТ», URL: '/rekam_medis', данные: { холстдата: холстдата }, заголовки: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, Тип данных: 'JSON', успех: функция (данные) { разрешить (данные); }, ошибка: функция (ошибка) { отклонить (ошибка); } }); }); } // Прикрепляем обработчик события клика к кнопке отправки $("#submitButton").on("click", function(event) { // Вызов функции saveCanvas() saveCanvas().then(функция(данные) { // Если обещание saveCanvas разрешается, отправьте форму document.getElementById("form_rekam_medis").submit(); }).catch(функция(ошибка) { // Обработка ошибок при необходимости console.error('Произошла ошибка:', error); }); }); А это мой контроллер

публичное хранилище функций (запрос $request) { $ID_rekam_medis = Str::random(8); $ID_rekam_medis = 'RM-' . $ID_rekam_medis; if ($request->has('canvasData')) { $imageDataURL = $request->input('canvasData'); $fileName = $ID_rekam_medis. '.png'; $imageData = str_replace('data:image/png;base64,', '', $imageDataURL); $imageData = base64_decode($imageData); если ($imageData === ложь) { die('Строка Base64 не может быть декодирована.'); } if (!is_dir(public_path('images/rekam_medis/')) || !is_writable(public_path('images/rekam_medis/'))) { die('Каталог не существует или недоступен для записи.'); } $result = file_put_contents(public_path('images/rekam_medis/') . $fileName, $imageData); если ($результат === ложь) { die('Невозможно записать изображение.'); } } $dokter = Dokter::where('ID_dokter', $request->ID_dokter)->first(); $nama_dokter = $dokter->nama_dokter; $pasien = Pasien::where('ID_pasien', $request->ID_pasien)->first(); $nama_pasien = $pasien->nama_pasien; $rekam_medis = новый РекамМедис(); $rekam_medis->ID_rekam_medis = $ID_rekam_medis; $rekam_medis->ID_pasien = $request->ID_pasien; $rekam_medis->nama_pasien = $nama_pasien; $rekam_medis->ID_dokter = $request->ID_dokter; $rekam_medis->nama_dokter = $nama_dokter; $rekam_medis->tanggal = $request->tanggal; $rekam_medis->джем = $request->джем; $rekam_medis->save(); return redirect()->route('rekam_medis.index')->with('успех', 'Rekam Medis berhasil ditambahkan'); } Спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»