0

我正在尝试在我的 GAE Java Web 应用程序中创建一个可以允许流式传输音频文件的 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),或者两者都更改?

谢谢!

4

1 回答 1

2
  1. 检查某些浏览器支持哪些音频格式。您最好的选择是 mp3 音频。

  2. 在客户端使用这个 html 片段:

    <audio controls> <source src="http://path/to/your/audio/file.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio>

  3. 确保您的服务器将音频文件作为audio/mpeg内容类型提供(blob 的内容也必须是 mp3 文件):

    res.setContentType("audio/mpeg");

  4. 删除Content-Disposition标题。当您希望浏览器将文件保存到本地磁盘时使用此选项。

于 2013-10-22T12:26:00.130 回答