直接从Blob流音频文件

时间:2018-11-13 05:36:05

标签: java mysql servlets audio

因此,我正在这个项目中进行工作,我想将音频文件存储在数据库中的LARGEBLOB中,文件的大小限制为大约10MB,并且能够通过Java加载数据允许播放媒体文件的servlet。

我能够找到的大多数资源都建议将其存储在本地,但是,由于我想在完全不同的位置重建网站,而不必依赖文件夹,因此我想避免使用此解决方案结构相同。

我遇到的问题主要是Web浏览器误解了servlet提供的二进制数据。但是,它设法检索到它是某种音频文件。它无法确定音频文件的类型,这使我相信该servlet没有提供足够的数据,或者我没有做足够的工作来指示Web浏览器如何播放该文件。

例如,如果我有一个文件audio.mp3,该文件已上载到数据库中的表Tracks中并存储在列TrackFile中。假设查询从表中选择正确的歌曲,则servlet需要提供什么数据,以便浏览器在访问servlet时播放文件。当前,当我加载servlet时,浏览器似乎假定类型为audio/mpeg而不是audio/mp3。 servlet当前传递的内容也看起来像这样:

response.setHeader("Content-Type", this.getServletContext().getMimeType(t.getTrackName() + '.' + t.getFileType()));
response.setHeader("Content-Length", String.valueOf(t.getTrackData().length));
response.setHeader("Content-Disposition", "inline; filename=\"" + t.getTrackName() + '.' + t.getFileType() + "\"");

response.getOutputStream().write(t.getTrackData());

其中t是一个对象,其中包含可以从数据库表中检索到的有关特定轨道的所有数据。方法getTrackData()返回一个byte[],其中包含列TrackFile的内容。此方法的来源是:link,尽管我对其进行了修改以使其能够与音频文件一起使用,但实际上并非如此。

基于我无法获取文件来回放文件的事实,或者说我想实现的目标通常是不可能的,我是否应该抓住任何明显的东西?

0 个答案:

没有答案