آفلاین
user-avatar

چک کردن سطح دسترسی برای نمایش ویدیو

3 سال پیش
توسط ندا طیبی آپدیت شد
آفلاین
user-avatar
ندا طیبی ( 5000 تجربه )
3 سال پیش

سلام
من یه ویدیو رو سایتم آپلود کردم به فرض به ادرس sample.com/movie/test.mp4 و میخوام این لینک به صورت مستقیم برای کاربر هایی که دسترسی لازم رو ندارن نمایش داده نشه ، و نتونن به طور مستقیم با داشتن این لینک ویدئو رو دانلود کنن.
برای view ای که کد نمایش این ویدیو داخل نوشته شده هست این دسترسی با میدلور چک شده اما میخوام برای لینک مستقیم ویدیو هم این دسترسی چک بشه که کسی با inspect element نتپنه لینک و برداره و به دیگران بده.
این هم کدی هست که داخل ویو برای نمایش ویدوئو قرار داده شده:
<source src="{{url('movie/intro.ogv#t=0.1')}}" type="video/ogg">

ممنون میشم راهنماییم بفرمایید

آفلاین
user-avatar
سجاد ( 14593 تجربه )
3 سال پیش
تخصص : برنامه نویس

سلام
فایل رو در پوشه ی storage آپلود کنید و در مرحله بعد در router مانند زیر آدرس دهی کنید:

Route::get('/attachments/video/{type}/{filename}{extension?}', 'VideoController@index')->where([
    'filename'  => "[a-zA-Z0-9_-]+",
    'extension' => '\..+',
]);

حالا یک کنترلر با اسم VideoController ایجاد کنید و تابعی مانند زیر اضافه کنید:

    public function index( $type, $filename, $extension = NULL ) {

        $path = storage_path() . "/video/$type/" . $filename . $extension;
        $exists = File::exists($path);
        if (!$exists) {
            $path = storage_path() . "/video/cover/notfound.jpg";
        }
        $file = File::get($path);
        $type = File::mimeType($path);
        $response = Response::make($file, 200);
        $response->header("Content-Type", $type);

        return $response;
    }

این کلیت ایجاد لینک دسترسی به فایل هاست.
کافی هست در مرحله ی آخر سطح دسترسی هایی که لازم دارید رو در تابع پیاده سازی کنید.

آفلاین
user-avatar
ندا طیبی ( 5000 تجربه )
3 سال پیش

بابت پاسخی که دادید خیلی ممنونم

برای ارسال پاسخ باید وارد سایت شوید