Как просмотреть видео в проекте Laravel?

Мне нужна помощь в том, как воспроизвести мои загруженные видео в моем проекте Laravel. Я могу загрузить их, и они отображаются в базе данных, но я не могу воспроизвести их в моем представлении, и я получаю эту ошибку: «Не удалось загрузить носитель, либо из-за сбоя сервера или сети, либо из-за того, что формат не поддерживается». Я использую Video.js. Вот мой код

контроллер:

public function store(MovieRequest $request)
{
DB::beginTransaction();
try {
$movie = new Movie;

$movie->movie_name = $request->input('movie_name');

if ($request->hasFile('uploaded_path')) {
$filenameWithExt = $request->file('uploaded_path')->getClientOriginalName();
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
$extension = $request->file('uploaded_path')->getClientOriginalExtension();
$fileNameToStore = $filename. '_'.time().'.'.$extension;
$path = $request->file('uploaded_path')->storeAs('public/movies/', $fileNameToStore);
} else {
$fileNameToStore = 'novideo.mp4';
}
$movie->uploaded_path = $fileNameToStore;

$movie->save();

$movie->actors()->attach($request->input('actor_id'));
$movie->categories()->attach($request->input('category_id'));

DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
Session::flash('success', 'A movie was successfully UPLOADED in the database!');
return redirect()->route('movies.index');
}

MovieRequest:

public function rules()
{
return [
'movie_name' => 'required|max:255',
'uploaded_path' => 'mimetypes:video/avi,video/mpeg,video/mp4|required',
'category_id' => 'required|exists:mysql.categories,id',
'actor_id' => 'required|exists:mysql.actors,id'
];
}

Посмотреть:

<tbody>
@foreach ($movies as $movie)
<tr>
<td>{{ $movie->id }}</td>
<td>{{ $movie->movie_name }}</td>


<td>
<video id="my-video" class="video-js" controls preload="auto" width="200" height="100" data-setup="{}">
<source src="public/movies/{{$movie->uploaded_path}}" type='video/mp4'>
</video>
</td>


<td>
@foreach ($movie->actors as $actor)
<a href="{{ route('actors.edit', $actor->id) }}">{{$actor->actor_name}} @unless($loop->last)
,
@endunless</a>
@endforeach
</td>
<td>
@foreach ($movie->categories as $category)
<a href="{{ route('categories.edit', $category->id) }}">{{$category->category_name}} @unless($loop->last)
,
@endunless</a>
@endforeach
</td>
<td>{{ date('M j, Y', strtotime($movie->created_at)) }}</td>
<td><a href="{{ route('movies.edit', $movie->id) }}" class="btn btn-default btn-sm">Edit</a></td>
</tr>
@endforeach
</tbody>

-1

Решение

Создайте конечную точку для показа вашего фильма:

Route::get('/movie/{id}', ['uses' => 'MovieController@downloadMovie']);

Добавьте метод в свой контроллер:

public function downloadMovie($id)
{
$movie = Movie::findOrFail($id);
// download the movie
return Response::download($movie->uploaded_path);
}

Тогда по вашему мнению:

 <video id="my-video" class="video-js" controls preload="auto" width="200" height="100" data-setup="{}">
<source src="/movie/{{$movie->getKey()}}" type='video/mp4'>
</video>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]