我可以用PHP提供MP3文件吗?

gar*_*uan 10 php security mp3 http-headers

以与使用php提供图像的相同方式,在CAPTACHAS等中使用,是否可以对音频文件执行相同操作?

我试过这个

<?php

$track = "sometrack.mp3";

if(file_exists($track)) {
    header('Content-type: audio/mpeg');
    header('Content-length: ' . filesize($track));
    header('Content-Disposition: filename="sometrack.mp3"');
    header('X-Pad: avoid browser bug');
    header('Cache-Control: no-cache');
    print file_get_contents($track);
} else {
    echo "no file";
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Safari,它可以播放MP3文件.它正在将Safari推入正确的模式,我将Quicktime控件启动几秒钟,然后"无视频".

我想保护文件免受未经授权的下载,以防你想知道我为什么要这样做.

kar*_*m79 14

您的内容处理应该是:

header('Content-Disposition: attachment; filename="sometrack.mp3"');
Run Code Online (Sandbox Code Playgroud)

不知道这是不是问题.我还建议使用readfile输出文件:

readfile($rSong);
Run Code Online (Sandbox Code Playgroud)

此外,使用详尽的Content-Type标头并设置Content-Transfer-Encoding也不会有什么坏处:

header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"); 
Run Code Online (Sandbox Code Playgroud)