В моем FileController
есть следующая функция, которая извлекает видео из моего storage (local)
:
function getVideo() {
$video = Storage::disk('local')->get("uploads/map_name/name_of_video.mp4");
$response = Response::make( $video, 200 );
$response->header( 'Content-Type', 'video/mp4' );
return $response;
}
В моем web.php
есть следующее route
:
Route::get('/get-video/', 'FileController@getVideo')->name('get-video');
Последнее, в моем view
, у меня есть следующее:
<video controls>
<source src="{{ route('get-video') }}" type="video/mp4">
Your browser does not support the video tag.
</video>
Это отлично работает. Видео показывается на мой взгляд. Тем не менее, я хотел бы сделать эту функцию динамичной, но я не могу заставить ее работать. Я сделал следующие изменения:
Сначала я передал var
функции getVideo
и передал ее функции get
:
function getVideo($video_name) {
$video = Storage::disk('local')->get("uploads/{$video_name}");
$response = Response::make( $video, 200 );
$response->header( 'Content-Type', 'video/mp4' );
return $response;
}
Затем я изменил route
на var
:
Route::get('/get-video/{video_name}', 'FileController@getVideo')->name('get-video');
И, наконец, в моем view
я передаю var
в route
<video controls>
<source src="{{ route('get-video', ['video_name' => '/map_name/name_of_video.mp4']) }}" type="video/mp4">
Your browser does not support the video tag.
</video>
Это, однако, приводит к 404 не найден. Я получаю этот маршрут:
https://mysite.local/get-video/map_name/name_of_video.mp4
.
Обратите внимание, что часть /upload
не обрабатывается. Однако, если я добавлю это вручную, маршрут также не будет выполнен.
Я уже сделал php artisan storage:link
.
Sidenote: часть /map_name/name_of_video.mp4
- это то, что я могу извлечь из database
для каждого видео.