我使用以下参数初始化 jplayer:
$jplayer.jPlayer('setMedia',{
mp3: data.audioMP3,
oga: data.audioOGA
});
假使,假设data.autdioMP3
(以及它的 OGA 对应项)是 php 脚本的路径,例如:'http://myserver.local/playaudio.php?songID=99&format=mp3'
我挣扎的地方是playaudio.php
。我想读取 MP3 文件并将其流式传输到 jplayer,而不透露音频的路径(这就是为什么我不使用音频文件的路径初始化 jplayer)。
类似的东西(部分取自读取文件的示例在 php 文档中):
<?php
$if ($validUser && file_exists($file){
header('Content-Transfer-Encoding: binary');
header('Content-Type: audio/mpeg');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
我认为这只是强制下载文件...这仍然会向用户显示文件的路径吗?是否有更好的选项可以将原始 mp3 数据流式传输给用户而不泄露您所知道的文件的路径?
Thanks!
由于您使用 javascript 来获取文件,其他人可以通过从浏览器(firebug、Chrome 的默认工具等)读取标头/文件请求来执行相同的操作。
保护文件不被下载的最佳方法是进行一系列检查以获取数据。它并不完美,但它会阻止除了最坚定的人之外的所有人。对于一些想法,请查看此页面Groovshark 的 API(这有点旧,缺少一些信息,所以它是完美的参考),或者只需访问 Grooveshark/Youtube 看看他们如何保护其内容。
通过巧妙地使用会话和良好的数据库,可以重新创建这种安全性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)