2010-08-23 102 views
2

我想在IE中嵌入默认媒体播放器播放.wav声音文件。声音文件位于某个HTTP位置。我无法在该播放器中发声。如何从网页浏览器中嵌入URL播放.wav文件 - Java

以下是验证码。

URL url = new URL("http://www.concidel.com/upload/myfile.wav"); 
     URLConnection urlc = url.openConnection(); 
     InputStream is = (InputStream)urlc.getInputStream(); 
     fileBytes = new byte[is.available()]; 
     while (is.read(fileBytes,0,fileBytes.length)!=-1){} 
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); 
     out.write(fileBytes); 

这里是嵌入代码的HTML。

<embed src="CallStatesTreeAction.do?ivrCallId=${requestScope.vo.callId}&agentId=${requestScope.vo.agentId}" type="application/x-mplayer2" autostart="0" playcount="1" style="width: 40%; height: 45" /> 
  1. 如果我在写FileOutputStream中则打得很好
  2. 如果我代替我正从URL文件到我的本地硬盘上的代码。那么它也可以正常工作。

我不知道为什么我无法播放来自HTTP的文件。以及为什么它从本地硬盘播放良好。

请帮忙。

回答

0

确保您设置了正确的响应类型。 IE在这方面非常挑剔。

[编辑]您的复制循环已损坏。试试这个代码:

URL url = new URL("http://www.concidel.com/upload/myfile.wav"); 
URLConnection urlc = url.openConnection(); 
InputStream is = (InputStream)urlc.getInputStream(); 
fileBytes = new byte[is.available()]; 
int len; 
while ((len = is.read(fileBytes,0,fileBytes.length)) !=-1){ 
    response.getOutputStream.write(fileBytes, 0, len); 
} 

与您的代码的问题是:如果数据不是一个单一的通话牵强is.read(),它不是追加到fileBytes而是第一个字节被覆盖。

此外,您从响应中获得的输出流已经被缓冲。

+0

我也试过了。但没有运气。 – 2010-08-23 10:37:09

+0

检查我的编辑。可以肯定的是,将数据也保存到一个文件(不仅仅是响应)并且尝试播放该文件(以测试它没有被破坏)。 – 2010-08-23 13:44:20