2013-02-04 74 views
0

我搜索了所有的网络找到这个解决方案,我发现其中一些涉及基于PHP的解决方案,如块或其他涉及mod_xsendfile()等,但我我找不到确切问题的解决方案。使用jplayer播放根文件夹以外的MP3文件

这里是问题:

我使用jplayer播放音乐在我的网站。我想要的是当用户添加歌曲到播放列表它将被添加到jplayer列表(我已经测试过,没有问题,我通过将JSON对象传递给java脚本来将该歌曲添加到播放列表中还涉及传递完整的歌曲URL)),但我不希望用户看到MP3的确切网址。或者即使他能够看到它,他也不应该通过在浏览器中直接输入该URL来访问它,但是我可以下载。

我使用hostgator作为虚拟主机,它提供了将文件放置在根文件夹之外的权限,这可能是对其他主机(如godaddy)的限制,但它仍然不支持共享主机上的mod_xsendfile(),所以请避免回答与此相关。

我很满意任何解决方案,无论我是否需要将我的文件保存在根外部或内部,但我只是想保护对文件的直接访问。

回答

1

Jplayer需要一个返回原始MP3数据的URL。因此,它需要能够直接读取文件,或者以其他方式将文件发送给它。

这里的经典解决方案(没有像X-SendFile这样的系统)是一个PHP脚本,它检查相关权限并发送所需文件。如果某人没有权限,它可能会发送一个不同的文件来告诉他们,或以其他方式通知用户。

执行您的验证检查,然后如果没有问题,请使用文件的路径调用http://php.net/readfile。它会从磁盘发送文件。您可能还需要首先为MIME类型设置一些标头。

+0

但这个解决方案似乎有一些问题,因为大多数主机都为php脚本设置了默认超时设置,所以有可能在文件传输完成之前脚本被主机强行杀死。 – RohitG