gpt4 book ai didi

java - JClouds:BlobStore.getBlob() 需要很长时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:58 26 4
gpt4 key购买 nike

我在 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) 在返回之前实际上是在下载文件吗?是否有另一种方法来获取我可以直接发送到浏览器的异步输入流?

最佳答案

您只能查询元数据:

BlobMetadata metadata = BlobStore.blobMetadata(container, name);
Long contentLength = metadata.getContentMetadata().getContentLength();

BlobStore.getBlob 启动下载但不下载整个 blob 数据。相反,它通过 Payload 或 InputStream 流式传输数据。它会阻塞,直到 blobstore 返回 blob 元数据。

请注意,您应该调用 Payload.close 以确保关闭底层套接字。

关于java - JClouds:BlobStore.getBlob() 需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18600755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com