Получить видео из хранилища Laravel - PullRequest
2 голосов
/ 03 июля 2019

В настоящее время я отправляю видео в папку хранилища в Laravel через следующий фрагмент кода внутри функции create():

if ($request->hasFile('video_url')) {
    $video = $request->file('video_url');
    $folder = make_url($validated['title']);
    $video_name = time().'-vid.'. $video->getClientOriginalExtension();

    Storage::disk('local')->put('/uploads/' . $folder . '/', $video);

    $validated['video_url'] = $folder . '/' . $video->hashName();
}

Он создает видео, отправляет его в соответствующую папку и отправляет URL-адрес видео в базу данных, чтобы я всегда мог получить правильную ссылку. Это все отлично работает.

Я понятия не имею, как извлечь видео для воспроизведения из хранилища.

Я пытался получить ссылку вручную внутри тегов видео, но, конечно, папка хранилища не является общедоступной, поэтому это не сработало.

{{$vid = Storage::disk('local')->get('/uploads/' . $e_course_chapter->video_url)}}

{{ var_dump($vid) }}

<video controls>

    <source src="{{  Storage::disk('local')->get('/uploads/' . $e_course_chapter->video_url) }}" type="video/mp4">
    Your browser does not support the video tag.

</video>

var_dump дает мне это:

/home/vagrant/code/storage/framework/views/777c4fe762b993d5be04ad6550ee11200bd4869d.php:49:string '���ftypmp42����mp42isomavc1����free�������������������������������������������������������������������������������������������������������������������������������mdat�� ���E���H��,� �#��x264 - core 79 - H.264/MPEG-4 AVC codec - Copyleft 2003-2009 - http://www.videolan.org/x264.html - options: cabac=0 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=6 psy=1 psy_rd=1.0:0.0 mixed_ref=1 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=-2 threads=6 nr=0 decimate=1 mbaff=0'... (length=383631)

Ответы [ 2 ]

3 голосов
/ 03 июля 2019

Вы можете создать маршрут, с которого вы можете получить видео и использовать этот маршрут в поле зрения.

В контроллере:

function getVideo() {
    $video = Storage::disk('local')->get("uploadpath_here");
    $response = Response::make($video, 200);
    $response->header('Content-Type', 'video/mp4');
    return $response;
}

В представлении:

use <source src="{{ route('/get-video') }} ... >

В пути:

Route::get('/get-video', Controller@getVideo);

, который в свою очередь вызовет функцию контроллера.

0 голосов
/ 03 июля 2019

Публичный диск предназначен для файлов, которые будут общедоступными.По умолчанию публичный диск использует локальный драйвер и хранит эти файлы в хранилище / app / public.Чтобы сделать их доступными из Интернета, вы должны создать символическую ссылку из общедоступного / хранилища в хранилище / приложение / общедоступное.

Чтобы создать символическую ссылку, вы можете использовать команду хранилища: ссылка Artisan:

php artisan storage:link
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...