2015-04-28 95 views
0

我開發音樂網站。如何播放從數據庫加載的音頻?

在​​的網頁我有HTML audio標籤
如果定位於WEB-INF母公司例如音頻文件

WebContent |-- META-INF |-- WEB-INF
-- some.mp3
我只是寫下一段代碼:

<audio ...> 
 
    <source src="#{request.contextPath}/some.mp3" type="audio/mpeg" /> 
 
</audio>

並添加控件後,我可以播放/暫停此音頻。

但是我應該怎麼做,如果我的音頻文件不存儲在本地WebContent文件夾?
我知道音頻文件應該像BLOB一樣存儲在數據庫中。
從數據庫下載選定的音頻後,我應該怎麼表示呢?(String陣列,某種Stream?)

在我在Web人民看到播放本地音頻文件的例子。
那麼,如何播放存儲在數據庫中的音頻(在jsf頁面上)?

我希望你明白我想要的。

+3

這已被回答了幾次不同的口味,但都歸結爲創建一個像這樣的servlet http://stackoverflow.com/questions/2340406/how-to-retrieve-and-display-images-from-a -database-in-a-jsp-page或http://stackoverflow.com/questions/1812244/simplest-way-to-serve-static-data-from-outside-the-application-server-in-a-java你認爲哪一個是愚蠢的? – BalusC

+0

@BalusC 我覺得第一個會更好,在我的情況下.. 但我有幾個關於它是如何工作的問題。 首先,我將在'WEB-INF'的父級中有名爲'audio'的靜態文件夾, 和'source'標籤看起來像是'...... 其次,上面的代碼會要求AudioServlet從數據庫下載音頻,將其轉換爲'Stream'並在'response'中將其設置爲'OutputStream'? – DarkFeniks

回答

1

你不能直接從數據庫讀取文件:你必須服務它給客戶端。

它適用於WebContent文件夾內的文件,因爲這些文件是由Web服務器自動提供的。

要提供存儲在數據庫中的文件,您需要編寫一個FileServlet。基本上這個文件servlet將:

  • 響應一個特定的請求;
  • 從數據庫中檢索文件;
  • 通過流將文件內容輸出給用戶。

看看this以便在FileServlet上取得良好的開端。