所以我在这个项目上工作,我想把一个音频文件存储在 LARGEBLOB
在数据库中,文件的大小被限制在10mb左右,并且能够通过允许播放媒体文件的Javaservlet加载数据。
我能找到的大多数资源都建议将其存储在本地,然而,我想避免这种解决方案,因为我希望在完全不同的地方重建网站,而不必依赖于相同的文件夹结构。
我遇到的问题主要是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,尽管我修改它是为了使它能处理音频文件,尽管它不能。
有什么明显的事情,我应该抓住的基础上,我不能得到它来播放文件或是我想实现一般不可能这么说?
暂无答案!
目前还没有任何答案,快来回答吧!