我有一个函数可以检索存储在Google Cloud Storage中的对象的下载链接。 Java中的实现如下所示:
public String getDownloadLink(String bucketName,
String blobName) {
return storage.signUrl(
BlobInfo.newBuilder(bucketName, blobName).build(),
60,
TimeUnit.MINUTES,
SignUrlOption.httpMethod(HttpMethod.GET),
SignUrlOption.withV4Signature()
).toString();
}
上述方法将bucketName
和blobName
作为参数,并返回该对象的下载链接,有效期为60分钟。是否可以使用GCS的Java客户端api获得同一存储桶中多个文件或对象的downloadlink列表,而不必在for循环中调用上述函数?例如,上述方法可能类似于:
public List<String> getDownloadLink(String bucketName,
List<String> blobName) {
// Get the downloadlinks for all the blobName in the list
}
我一直在寻找解决方案,但找不到任何实质性的方法,并且一直在使用for循环来获取多个文件名的下载链接。使用for循环查询多个文件可能会占用大量资源,并且很乏味。真的可以使用一些帮助。
答案 0 :(得分:1)
根据我对问题的理解,您想返回一个存储桶中多个对象的签名URL列表(有效期为60分钟),而不是直接downloading the files。>
很明显,如果您要使用任何Cloud Storage客户端库下载这些对象,则可以使用BlobListOption.prefix()
来过滤某些文件夹或对象上的查询,如图所示在此example code中。
但是,在检查了Java Cloud Storage客户端库documentation之后,我目前不知道任何基于前缀或方法的Signed URL来访问Cloud Storage API中的对象列表。
由于每个文件或对象都需要单独签名,因此您很可能需要遍历Blob列表。
尽管它不是Java Cloud Storage客户端库,但我发现以下example可以为您提供帮助。