Yuv*_*rmi 12 php mp3 header filestream readfile
我的问题非常相似: 我可以用PHP提供MP3文件吗? 基本上我试图保护mp3文件免受直接下载,因此用户必须先通过php才能获得首次验证.这是我的代码:
header('Content-type: audio/mpeg');
header('Content-length: ' . filesize($file));
header('X-Pad: avoid browser bug');
Header('Cache-Control: no-cache');
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
readfile($file);
Run Code Online (Sandbox Code Playgroud)
这是我的问题:文件只占一开始的一小部分(通过浏览器中的Quicktime)然后停止 - Quicktime似乎认为文件的长度只与它设法下载的块一样长.当我重新加载时 - 它会播放一个稍微大一点的块 - 无论它设法下载到那一点.
这是我发送的标题中的问题吗?我该如何传输这样的文件?如果swf正在从该文件中读取,这是一个问题吗?
谢谢!
谢谢你们所有答案.虽然这些事情都没有解决问题,但很多都让我朝着正确的方向前进.非常感激.有关完整解决方案,请参阅下面的答案
这就是诀窍.
$dir = dirname($_SERVER['DOCUMENT_ROOT'])."/protected_content";
$filename = $_GET['file'];
$file = $dir."/".$filename;
$extension = "mp3";
$mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3";
if(file_exists($file)){
header('Content-type: {$mime_type}');
header('Content-length: ' . filesize($file));
header('Content-Disposition: filename="' . $filename);
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($file);
}else{
header("HTTP/1.0 404 Not Found");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34612 次 |
| 最近记录: |