簡體   English   中英

如何在不提供絕對路徑的情況下流音頻文件

[英]How to stream audio files without giving absolute path

無論如何,是否有流音頻文件而沒有給出文件的complete path

例如,每當我們嘗試使用HTML5音頻標簽或javascript播放mp3文件時,我都必須提供mp3文件的完整路徑,例如

<audio controls>
  <source src="http://example.com/file/hello_name.mp3" type="audio/mpeg">
</audio>

因此,我認為我們可以提供mp3文件的id而不是文件的complete path ,它應該是這樣的:

<audio controls>
  <source src="http://example.com/stream.php?file_id=111" type="audio/mpeg">
</audio>

通常你必須stream.php通過發送正確的標題傳遞二進制數據(的file_id == 111例如在你的例子) header()函數 ,並與數據ReadFile的(),前提是你得之間的關系file_id和數據庫中的物理文件或類似文件。

不過,請謹慎使用readfile() ,並注意它只會輸出所告知的內容,因此請確保您的應用程序不允許有人告訴它輸出帶有數據庫密碼等配置文件的其他內容。

您的stream.php文件將如下所示:

<?php
    // Say you hava a table "file_paths" with two columns file_id and file_path
    $sql = $pdo->prepare("SELECT FROM file_paths WHERE file_id = ?");
    $sql->bindValue(1, $_GET['file_id'], PDO::PARAM_INT);
    $sql->execute();
    $fetch = $sql->fetchObject();

    // retrieve file path using its id
    $path = $fetch->file_path;
    header("Location: " . $path);
?>

然后在目標頁面上,通過將file_id傳遞到stream.php來添加播放器,如下所示:

<audio controls>
  <source src="stream.php?file_id=123" type="audio/mpeg">
</audio>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM