问题描述
情况:我有大量的视频和图像以及小型的Play应用程序,这些应用程序将对Blob的引用存储在DB中.对于可以正常使用的网络,我渲染页面,在其中放置Flowplayer,并在配置中使用直接Blob的路径作为源视频.无论如何,我都被要求为其他较旧的设备提供其他可能性-这些设备应直接在标头中通过响应头发送文件:
Situation: I have a large set of videos and images and small Play applications, which stores references to the blobs in DB. For web usage that's OK, I'm rendering page, where I put Flowplayer and in it's config I'm using direct blob's path as a source video. Anyway I was asked for additional possibility for other older devices - which should send the file in the response body directly with headers:
Content-Type:video/mp4
Content-disposition:inline
Content-Transfer-Encoding:binary
最初,该解决方案是使用PHP脚本完成的,该脚本使用CURL将blob提取到服务器,并作为对带有可操作标头的客户端的响应返回.
Originally that solution was done with PHP script, which fetched the blob to the server with the CURL and returned as a response to the client with manipulated header.
问题:用Play做到这一点的最佳方法是什么? (最好不要将文件下载到服务器). Blob将是公共的,因此我不需要关心隐藏原始路径,只需要添加上面提到的标头即可.
Question: What is the best way to do that job with Play? (preferably without downloading file to the server). Blobs will be public, so I don't need to care about hiding original paths, I just need to add headers mentioned above.
- 是否应该使用
WS.url()
将文件提取到服务器并以带有修改后的标头的Result
形式发送?我试过了,但是WS
超时有一些问题. - 也尝试设置标头
Content-Location:http//mystorage...
,因为据我了解,它仍然需要响应正文中的文件.因此,也许还有其他一些仅使用标头的技术. - 有什么方法可以在返回直接Blob时强制使用自定义标头(即,通过在GET参数中进行设置)吗?
- Should I use
WS.url()
to fetch the file to the server and send it as aResult
with modified headers? I tried this, but had some problems withWS
timeouts. - Also tried to set the header
Content-Location:http//mystorage...
, anyway as I understood it requires file in the response body anyway. So maybe there is some other technique with usage of the headers only. - Is there any way to force custom headers while returning direct blob (ie. by setting it in the GET params) ?
也许还有其他方法?
推荐答案
我解决了方法No的问题. 1,但使用java.net.URL
代替WS.url()
I solved my problem with approach no. 1, but with usage of java.net.URL
instead of WS.url()
,
对于更好的主张(特别是如果无需将文件下载到服务器即可完成),赏金承诺是切实可行的.
Bounty promise is actual for better propositions (especially, if it will be done without downloading file to the server).
这篇关于如何将Windows Azure存储Blob发送到具有已更改标头的浏览器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!