【问题标题】:Retrieve video from Laravel Storage从 Laravel 存储中检索视频
【发布时间】:2019-07-03 14:13:53
【问题描述】:

目前我正在通过create() 函数中的以下代码将视频发送到 Laravel 中的存储文件夹:

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)

【问题讨论】:

    标签: php laravel laravel-5 storage


    【解决方案1】:

    您可以创建一条路径,从中获取视频并在视图中使用该路径。

    在控制器中:

    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);
    

    依次调用控制器函数。

    【讨论】:

    • 谢谢。我实际上以类似的方式尝试过这个,但显然我忘了在我的控制器中使用响应。它现在正在工作。
    • 非常有帮助谢谢~:)
    【解决方案2】:

    公共磁盘用于存放可公开访问的文件。默认情况下,公共磁盘使用本地驱动程序并将这些文件存储在 storage/app/public 中。为了使它们可以从 Web 访问,您应该创建一个从 public/storage 到 storage/app/public 的符号链接。

    要创建符号链接,您可以使用 storage:link Artisan 命令:

    php artisan storage:link
    

    【讨论】:

    • 我需要我的视频不能被公开访问,这就是我采用这种方法的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多