我在 web 应用程序中使用 jclouds 1.6.1-incubating(使用 scala playframework 2.1.3,但这不重要)。
由于 jclouds 中接收 blob 的所有其他方法似乎已被弃用,我想使用
BlobStore.getBlob(container,name).getPayload().getInput()
获取存储数据的输入流。我想将这些数据流式传输到浏览器,而实际上不必将整个 blob 存储在服务器上。
有时我只想获取一些元数据,例如
BlobStore.getBlob(container,name).getMetadata().getContentMetadata().getContentLength()
然而,调用
BlobStore.getBlob(container,name)
返回需要很长时间(我假设,它将 blob 加载到内存中)。这会导致用户单击“下载”后 webapp 无响应。我希望云数据立即开始流式传输到浏览器(playframework 支持)。
当我只想获取元数据时,这个超时会更糟(我可能想要获取许多文件的元数据而不将它们全部下载到 webapp)。
我对吗?BlobStore.getBlob(container,name) 在返回之前实际上是在下载文件吗?是否有另一种方法可以获取可以直接发送到浏览器的异步输入流?