3 回答
TA贡献1871条经验 获得超13个赞
listBlobs()
方法有一个overload
接受prefix
参数。
public Iterable<ListBlobItem> listBlobs(final String prefix, final boolean useFlatBlobListing) { return this.listBlobs(prefix, useFlatBlobListing, EnumSet.noneOf(BlobListingDetails.class), null, null); }
您需要传递path of the folder
asprefix
和传递true
for useFlatBlobListing
,这将列出该虚拟文件夹中的所有 blob。
获得该 blob 列表后,您可以使用downloadToFile
每个 blob 上的方法下载 blob。
TA贡献1943条经验 获得超7个赞
一段时间后,我发现我可以应用CloudBlockBlob类型ListBlobItem和下载方法。
@Bean
@SneakyThrows
public CommandLineRunner commandLineRunner(CloudBlobContainer blobContainer) {
return args -> {
Sets.newConcurrentHashSet(blobContainer.listBlobs("documents/"))
.stream()
.filter(it -> it.getUri().toString().contains("pdf"))
.forEach(it -> {
((CloudBlockBlob) it).downloadToFile(((CloudBlockBlob) it).getName());
});
};
}
TA贡献1797条经验 获得超6个赞
你可以通过两种方式做到这一点
(i) AZcopy-AzCopy /Source:https://myaccount.file.core.windows.net/demo/ /Dest:C:\myfolder /SourceKey:key /S
(ii) 通过Azure Cli——
# Create a directory to store all the blobs
mkdir /downloaded-container && cd /downloaded-container
# Get all the blobs
BLOBS=$(az storage blob list -c $CONTAINER \
--account-name $ACCOUNT_NAME --sas-token "$SAS_TOKEN" \
--query [*].name --output tsv)
# Download each one
for BLOB in $BLOBS
do
echo "********Downloading $BLOB"
az storage blob download -n $BLOB -f $BLOB -c $CONTAINER --account-name $ACCOUNT_NAME --sas-token "$SAS_TOKEN"
done
如果您只想通过代码,这里有一个,sample repo
因为没有直接的方法可以通过 SDK 完成。
HttpGet httpGet = new HttpGet(urlString);
signRequest(httpGet, resourcePath, account, hashFunction);
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
System.out.println(response.getStatusLine());
添加回答
举报