为了账号安全,请及时绑定邮箱和手机立即绑定

验证用户登录后如何从laravel存储目录中播放视频

验证用户登录后如何从laravel存储目录中播放视频

PHP
慕容森 2022-08-19 10:00:06
我一直在开发一项服务,用户只能访问内容,并且只有在他们为内容付费的情况下才能访问内容。所以我正在将内容上传到存储目录,并且为了访问内容,我已经创建了这样的路由。Route::any('storage/course/videos/{video_id}',['uses'=>'StorageController@video','middleware'=>'auth']);然后在存储控制器中,我正在获取文件并将其作为响应返回,如下所示...public function video($video_id){    //Some logic for subscription check goes here        $path = storage_path('app/public/course/videos/'.$video_id);        // return $path;        if (!File::exists($path)) {            abort(404);        }        $file = File::get($path);        $type = File::mimeType($path);        $response = Response::make($file, 200);        $response->header("Content-Type", $type);        // $response->header("Accept-Ranges", 'bytes');         //$response->header("Content-Length", 51265590);         // $response->header("Content-Disposition" ,"attachment");  //Triggers Download        return $response;    }此技巧对图像按预期工作,但不适用于 视频 。即使视频下载正在工作,但浏览器每次都无法播放视频。最初,我认为可能会缺少一些标题,但我尝试了一些标题,但它不起作用。那么,任何人我做错了什么,或者是否有可能这样做,或者任何其他技术来实现这一点提前致谢!!
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

在使用我从此处获得的其他VideoStream类后,它起作用 https://gist.github.com/vluzrmos/d5682ad426525196d069


 public function video($video_id){


        $path = storage_path('app/public/course/videos/'.$video_id);


        if (!File::exists($path)) {

            abort(404);

        }


        $stream = new \App\Http\VideoStream($path);


        return response()->stream(function() use ($stream) {

            $stream->start();

        });

    }


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信