我正在尝试在我的GAE Java Web应用程序中创建一个URL,该URL可以允许流式传输音频文件,但到目前为止它只适用于直接下载。这是我的servlet到目前为止从BlobStore下载文件的方式,其中BlobKey在“file_id”参数中发送:
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
BlobInfoFactory bif = new BlobInfoFactory();
BlobKey blobKey = new BlobKey(req.getParameter("file_id"));
String fileName = bif.loadBlobInfo(blobKey).getFilename();
res.setContentType("text/plain");
res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
blobstoreService.serve(blobKey, res);
}
servlet映射到一个如下所示的URL: xxx.appspot.com/fileDownload?file_id=yyy
如何在客户端(浏览器或移动应用程序)访问此URL以传输音频数据而不是直接下载? 我是否必须更改服务器端,客户端协议才能访问它(而不是HTTP),或两者兼而有之?
谢谢!
答案 0 :(得分:2)
检查哪些音频格式为supported by certain browsers。你最好的选择是mp3音频。
在客户端使用此html代码段:
<audio controls>
<source src="http://path/to/your/audio/file.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
确保您的服务器提供的音频文件为audio/mpeg
内容类型(blob的内容也必须是mp3文件):
res.setContentType("audio/mpeg");
删除Content-Disposition
标题。当您希望浏览器将文件保存到本地磁盘时使用此选项。