2016-12-05 90 views
-1

長話短說,我想在我的網站上向登錄的用戶顯示視頻。如果沒有登錄,您應該無法看到或公開訪問它們物。PHP返回沒有公開訪問的視頻文件

這意味着我把視頻文件放入一個沒有公開訪問的文件夾中,只能通過www-data訪問。

現在爲了讓它更簡單一些,我將使用基本的html和php文件。假設我正在使用uikit視頻播放器。

video.html

<div id="video-box" class="video-card__box" style="display: none"> 
    <video id="video" class="uk-responsive-width" width="auto" height="auto"> 
     <source src="fileHandler.php?file=video.mp4"></source> 
    </video> 
</div> 

現在應該是在PHP文件是什麼?例如,這只是下載文件,而我想在錄像機中顯示它:

fileHandler.php

if (Auth::check()) 
{ 
     header('Content-Type: video/mp4'); 
     header('Content-Length: ' . $size); // Lets say I know the filesize 
     fpassthru(fopen($_GET['file']), 'rb')); 
} 

我希望你明白我在我一直在想這件事對我的情況。幾天和今晚才試圖解決這個問題。

+1

當用作HTML5視頻標籤的源代碼時,它肯定不會嘗試下載它? –

+0

我認爲你的方法是正確的,只要確保mp4文件不可公開訪問 – developer

回答

0

你想通過PHP視頻文件,這不是一個好主意,因爲:

  • 您將獲得1個PHP處理每一個視頻流,其消耗的內存和資源,並延伸你連續運行的max_execution_time。如果您的網站負載較輕,那麼以這種方式耗盡流程非常容易。
  • 你會很難實現一個普通HTTP服務器免費提供的HTTP功能。就像從文件中間流式傳輸一樣。

一個合適的解決方案:使用nginx' auth_request module所以你的PHP代碼將只處理授權,然後nginx將做視頻流(它很擅長)。

相關問題