2013-02-04 101 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