PHP输出内部服务器文件


PHP output internal server file?

在我的服务器上有一个存放音乐文件的目录,通常是。mp3格式。我正在编写一个web应用程序来搜索和播放这些曲目。

所有的文件都存储在MySQL数据库中,包括它们的绝对服务器路径,艺术家,专辑和标题信息。

我想做的是有一个PHP文件,在服务器上"输出"一个mp3文件,通常是无法从web访问的。所以,这就是我想要达到的效果:

客户端请求play.php?id = 10PHP从ID = 10的MySQL数据库获取绝对服务器路径PHP输出文件(实际上是在例如。"/home/user/文件/no_web/mp3/Thing.mp3")对于客户端,它看起来像有一个名为http://myserver.com/play.php?id=10的mp3文件,并开始播放。

我确信这种事情是可能的,只是不确定怎么做。提前感谢:)

您需要发送正确的content-type标头,然后只输出文件:

header('Content-type: audio/mpeg3');
readfile('filename.mp3');

可以使用readfile函数来读取和发送文件。

设置mime类型,这样浏览器就知道web服务器发送的是什么类型的文件,使用header函数:

header('Content-Type: audio/mpeg');

另外,你可能还想设置HTTP报头的内容长度。

header('Content-Length: ' . filesize($filepath) );

如果您要做的只是让用户下载mp3,那么只需使用readfile命令,它将读取mp3文件并将其传递给客户机。但是,您需要确保正确设置mime-type