我一直在开发一项服务,用户只能访问内容,并且只有在他们为内容付费的情况下才能访问内容。所以我正在将内容上传到存储目录,并且为了访问内容,我已经创建了这样的路由。
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;
}
此技巧对图像按预期工作,但不适用于 视频 。即使视频下载正在工作,但浏览器每次都无法播放视频。最初,我认为可能会缺少一些标题,但我尝试了一些标题,但它不起作用。
那么,任何人我做错了什么,或者是否有可能这样做,或者任何其他技术来实现这一点
提前致谢!!
交互式爱情