亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Azure Blob 存儲下載 blob 列表

從 Azure Blob 存儲下載 blob 列表

牛魔王的故事 2023-06-04 11:09:51
我創建了CloudBlobContainer正確的連接字符串:@Bean@SneakyThrowspublic CloudBlobContainer blobContainer(CloudStorageAccount cloudStorageAccount) {    return cloudStorageAccount            .createCloudBlobClient()            .getContainerReference(containerName);}我看到使用的 blob 列表blobContainer.listBlobs()目前,我正在尋找從特定文件夾下載列表 blob 的最有效方法。
查看完整描述

3 回答

?
慕桂英4014372

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 folderasprefix和傳遞truefor?useFlatBlobListing,這將列出該虛擬文件夾中的所有 blob。

獲得該 blob 列表后,您可以使用downloadToFile每個 blob 上的方法下載 blob。



查看完整回答
反對 回復 2023-06-04
?
楊__羊羊

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());

                });


    };

}


查看完整回答
反對 回復 2023-06-04
?
互換的青春

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());


查看完整回答
反對 回復 2023-06-04
  • 3 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號