0

我已经在网上搜索了一个解决方案,我发现其中一些涉及基于 php 的解决方案,如分块或其他涉及 mod_xsendfile() 等的解决方案,但我找不到确切问题的解决方案。

这是问题:

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

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

我对任何解决方案都很好,无论我需要将我的文件保存在根目录之外还是里面,但我只想保护对文件的直接访问。

4

1 回答 1

1

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

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

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

于 2013-02-04T17:54:33.943 回答