연습 - Blob 참조 가져오기
Blob Storage의 컨테이너와 상호 작용하려면 BlobContainerClient 개체를 사용합니다. 마지막 단원에서 본 것처럼 컨테이너를 만드는 것 외에도 BlobContainerClient 개체를 사용하여 컨테이너의 Blob을 나열할 수 있습니다.
비고
이 연습은 선택 사항입니다. 이 연습을 완료하려면 시작하기 전에 Azure 구독을 만들어야 합니다. Azure 계정이 없거나 현재 계정을 만들지 않으려는 경우 제공되는 정보를 이해할 수 있도록 지침을 읽을 수 있습니다.
컨테이너 Blob 나열
BlobContainerClient의 GetBlobsAsync 메서드를 사용하여 컨테이너의 Blob 목록을 가져옵니다. 백그라운드에서 클라이언트는 컨테이너의 모든 Blob을 나열하기 위해 Azure에 대해 하나 이상의 HTTP 호출을 수행합니다. 이 메서드는 비동기이므로 읽을 때 await 결과가 필요합니다. 단일 HTTP 호출에서 모두 반환되지 않을 수도 있습니다. 다음 코드는 foreach 루프를 사용하여 결과를 읽는 표준 패턴을 보여줍니다.
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
// Read the BlobItem and work with it here
}
listBlobs의 BlobContainerClient 메서드를 사용하여 컨테이너의 Blob 목록을 가져올 수 있습니다. 백그라운드에서 클라이언트는 컨테이너의 모든 Blob을 나열하기 위해 Azure에 대해 하나 이상의 HTTP 호출을 수행합니다. 이 메서드는 PagedIterable<BlobItem>을 구현하는 Iterable<BlobItem>을 반환합니다. 그런 다음, 한 번에 하나의 항목 또는 항목 페이지별로 읽을 수 있습니다. 다음 코드는 for 루프를 사용하여 결과를 읽는 표준 패턴을 보여줍니다.
for (BlobItem blob : blobContainerClient.listBlobs()) {
// Read the BlobItem and work with it here
}
blobContainerClient.listBlobs()
.stream()
.map(blobItem -> /* Read the BlobItem and work with it here */)
.collect(Collectors.toList());
연습
앱의 기능 중 하나가 작동하려면 API에서 Blob 목록을 가져와야 합니다. 앞서 보여준 패턴을 사용하여 컨테이너의 모든 Blob을 나열합니다. 목록을 처리할 때 각 Blob의 이름을 가져옵니다.
편집기를 사용하여 GetNames의 을(를) 다음 코드로 바꾼 후 변경 내용을 저장합니다.
public async Task<IEnumerable<string>> GetNames()
{
List<string> names = new List<string>();
BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);
// Get the container the blobs are saved in
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);
// This gets the info about the blobs in the container
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
names.Add(blob.Name);
}
return names;
}
FilesController이(가) 이 메서드에서 반환하는 이름을 처리하여 이름을 URL로 변환합니다. 클라이언트에 반환된 경우 이름은 페이지에서 하이퍼링크로 렌더링됩니다.
편집기를 사용하여 listNames의 BlobStorage.java를 다음 코드로 바꾼 후 변경 내용을 저장합니다.
public List<String> listNames() {
return blobContainerClient.listBlobs()
.stream()
.map(BlobItem::getName)
.collect(Collectors.toList());
}
IndexBean 및 index.xhmtl이(가) 이 메서드에서 반환한 이름을 페이지에서 하이퍼링크로 렌더링되도록 처리합니다.