問題描述
我正在研究一種通過 PHP 提供 MP3 文件的方法,經過一些幫助形成如此龐大的文件,我讓它工作了 這里
I'm working on a way to serve up MP3 files through PHP and after some help form the SO massive, I got it working here
但是,當我將它用作這樣的音頻標簽中的源時,該示例似乎不起作用
However, that example doesn't appear to work when I use it as the source in an audio tag like this
<html>
<head>
<title>Audio Tag Experiment</title>
</head>
<body>
<audio id='audio-element' src="music/mp3.php" autoplay controls>
Your browser does not support the audio element.
</audio>
</body>
</html>
這里是 PHP
<?php
$track = "lilly.mp3";
if(file_exists($track))
{
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-length: ' . filesize($track));
header('Content-Disposition: filename="lilly.mp3"');
header('X-Pad: avoid browser bug');
Header('Cache-Control: no-cache');
readfile($track);
}else{
echo "no file";
}
所以我在想(這可能是一個非常糟糕的主意,你告訴我)當有人請求 .MP3 時,我可能能夠設置 Apache 來提供 PHP 文件.
So I'm thinking (and this may be a really bad idea, you tell me) that I might be able to set up Apache to serve a PHP file when someone requests an .MP3.
所以我有三個問題
- 這行得通嗎
- 好主意/壞主意?
- 我需要做什么?將AddType application/x-httpd-php .mp3"放入 httpd conf 中可以嗎?
推薦答案
您的代碼中存在一些錯誤:
There are some errors in your code:
- 一個資源只能有一個內容-輸入值.因此,您必須決定要使用的媒體類型.我建議
audio/mpeg
. - 您忘記在內容中指定配置-處置.如果您只想提供文件名而不想更改配置,請使用默認值
inline
.
其余看起來不錯.但如果找不到文件,我也會發送 404 狀態碼.
The rest looks fine. But I would also send the 404 status code if the file cannot be found.
$track = "lilly.mp3";
if (file_exists($track)) {
header("Content-Type: audio/mpeg");
header('Content-Length: ' . filesize($track));
header('Content-Disposition: inline; filename="lilly.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($track);
exit;
} else {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
echo "no file";
}
這篇關于設置 apache 在請求 MP3 文件時為 PHP 提供服務的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!