我从JavaHTML5Web应用程序返回什么来播放带有audiocontrol标记的声音文件

我从JavaHTML5Web应用程序返回什么来播放带有audiocontrol标记的声音文件,java,html,html5-audio,Java,Html,Html5 Audio,我希望能够播放基于Java的web应用程序中的音频文件 <audio controls="controls"> <source src="/musicserver/test.mp3"> </audio> 现在,如果文件物理上位于我的web应用程序的根文件夹下的文件夹中,就可以了 <audio controls="controls"> <source src="/musi

我希望能够播放基于Java的web应用程序中的音频文件

  <audio controls="controls">
            <source src="/musicserver/test.mp3">
        </audio>
现在,如果文件物理上位于我的web应用程序的根文件夹下的文件夹中,就可以了

  <audio controls="controls">
            <source src="/musicserver/test.mp3">
        </audio>

但如果它在机器上的其他地方,我用符号链接绕过了它,但这导致了另一个问题,这意味着我不能使用这种方法

因此建议的另一个解决方案是调用playmusic端点,将文件路径作为参数传递给它。像这样

  <audio controls="controls">
            <source src="/musicserver/playmusic?url=/musicfolder/test.mp3">
        </audio>


但是我不知道这个端点到底应该做什么。服务器是用Java编写的,我可以读取文件,但是它应该返回什么才能允许音频控件播放音乐呢

首先将响应mime类型设置为
audio/mpeg
,将mp3文件作为原始字节读取,基本上是
xml/json/html
之外的任何servlet响应,您要将
byte[]
写入响应流

res.setContentType("audio/mpeg");

//this whole block should be in a try catch 
FileInputStream fis = new FileInputStream(new File("yourmp3file.mp3"));
int c;
while((c=fis.read())!=-1){
    res.getWriter().write(c);

}
res.getWriter().flush();

OK看起来很简单,但不一定是MP3,例如,我注意到Firefox可以播放wav文件,那么在这种情况下,我应该将contentType设置为什么,或者我不需要实际设置它。你可以获得mime类型的列表,谢谢它的工作,但不幸的是存在相关问题,如果你对这些有任何想法,我们将不胜感激