java - 如何将 Windows Azure 存储 blob 发送到浏览器并更改 header

标签 java playframework-2.0 azure-storage httpresponse

情况:我有大量视频和图像以及小型 Play 应用程序,它们在数据库中存储对 blob 的引用。对于网络使用来说,这是可以的,我正在渲染页面,在其中放置 Flowplayer,并在其配置中使用直接 blob 的路径作为源视频。不管怎样,我被要求为其他旧设备提供额外的可能性 - 应该直接在响应正文中发送带有 header 的文件:

Content-Type:video/mp4
Content-disposition:inline
Content-Transfer-Encoding:binary

最初该解决方案是使用 PHP 脚本完成的,该脚本使用 CURL 将 blob 提取到服务器,并使用受操纵的 header 作为响应返回给客户端。

问题:使用 Play 完成这项工作的最佳方式是什么? (最好不要将文件下载到服务器)。 Blob 将是公开的,因此我不需要关心隐藏原始路径,我只需要添加上面提到的 header 。

  1. 我应该使用 WS.url() 将文件获取到服务器并将其作为带有修改后的 header 的 Result 发送吗?我尝试过此操作,但遇到了一些 WS 超时问题。
  2. 还尝试设置 header Content-Location:http//mystorage...,无论如何,据我所知,无论如何它都需要响应正文中的文件。所以也许还有一些其他仅使用 header 的技术。
  3. 有什么方法可以在返回直接 blob 时强制自定义 header (即通过在 GET 参数中设置它)?

也许有一些完全不同的方法?

最佳答案

我用方法号解决了我的问题。 1,但使用 java.net.URL 而不是 WS.url()

赏金 promise 是为了更好的建议而实际存在的(特别是,如果不需要将文件下载到服务器即可完成)。

关于java - 如何将 Windows Azure 存储 blob 发送到浏览器并更改 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787259/

相关文章:

scala - Play 框架 2 的脚手架

c# - 用于挂载azure云驱动器的控制台应用程序

java - 使用 Facebook presto 解析器

java - 如何防止 javax 变压器转义空白?

java - 如何从 YAML 文件加载 DATETIME 对象?

java - 尝试保存凭据时,使用 Google Drive API 库和 Play with Java 会卡住/锁定应用程序

python - numpy.load 来自 io.BytesIO 流

Azure存储表查询,哪个更快?

javascript - 检查日期是否存在(第 30 天/第 31 天)

java - queryPurchases() vs queryPurchaseHistoryAsync() 为了 'restore' 功能?