Я создаю приложение Laravel, в котором пользователь может отправлять URL-адреса изображений в форме. Каждая новая строка имеет URL и после отправки в контроллер я обрабатываю изображения и затем они сохраняются на сервере в профиле пользователя. У меня нет проблем с функциональностью, а не с способом показать «обработку» посетителю.
Моя цель заключается в следующем.
Когда пользователь отправляет, скажем, 15 ссылки на изображения после отправки формы. Я хочу показать на экране под формой поле, в котором обработанные изображения будут отображаться как отправленные и выполненные, а если возникнет проблема с отправленной ссылкой, то будет показано, что она не выполнена.
В данный момент мне приходится ждать, пока система загрузит все изображения, и после этого я могу перенаправить их на страницу «Успех», какие-либо советы о том, как я могу показать обработку в реальном времени? Я знаю, что должен использовать AJAX, но любые предложения, как изменить Laravel logi c, чтобы я мог вернуться и перенаправить на страницу, но в то же время продолжить обработку данных и показать ответ ?
Форма:
<form class="form-horizontal" action="{{route('image.process')}}" method="post">
{{ csrf_field() }}
{{ method_field('post') }}
<textarea name="links" id="links" class="form-control" placeholder="..." rows="10"></textarea>
<button class="btn btn-success waves-effect waves-light" type="submit">Submit</button>
</form>
Контроллер:
public function process(Requests $request)
{
$request_array = explode(PHP_EOL, $request->links);
$request_array = str_replace("\n", '', $request_array);
$request_array = str_replace("\r", '', $request_array);
foreach ($request_array as $image) {
$user = Auth::user();
$filePath = 'uploads/images/'.$user->id.'/';
$filePublicPath = public_path($filePath);
if(getimagesize($image)){
$fileInfo = new \SplFileInfo($image);
$fileExtension = image_type_to_extension(exif_imagetype($fileInfo));
$fileName = str_random(20).$fileExtension;
copy($image, $filePublicPath.$fileName);
$user->images()->create(['file' => $filePath.$fileName]);
$user->save();
}
}
return redirect()->route('user.submitted');
}