컨테이너에 있는 Azure blob 파일의 이름 목록을 가져오는 중?
Azure Blob 파일 이름을 나열해야 합니다.현재 URL로 모든 파일을 나열할 수 있지만 이름 목록만 있으면 됩니다.이름 구문 분석을 피하고 싶습니다.아래의 코드와 가이드를 볼 수 있습니까?
CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(blobConectionString);
var backupBlobClient = backupStorageAccount.CreateCloudBlobClient();
var backupContainer = backupBlobClient.GetContainerReference(container);
var list = backupContainer.ListBlobs();
Windows Azure Storage 4.3.0을 사용하는 경우 이 코드를 사용해 보십시오.
List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
이 작업을 수행하는 또 다른 방법은 다음과 같습니다.
CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(blobConectionString);
var backupBlobClient = backupStorageAccount.CreateCloudBlobClient();
var backupContainer = backupBlobClient.GetContainerReference(container);
// useFlatBlobListing is true to ensure loading all files in
// virtual blob sub-folders as a plain list
var list = backupContainer.ListBlobs(useFlatBlobListing: true);
var listOfFileNames = new List<string>();
foreach (var blob in blobs) {
var blobFileName = blob.Uri.Segments.Last();
listOfFileNames.Add(blobFileName);
}
return listOfFileNames;
출처: Azure blob 파일 목록을 재귀적으로 로드하는 방법은 무엇입니까?
크기, 수정 날짜 및 이름과 같은 추가 정보를 얻을 수 있습니다.
CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(YOUR_CON_STRING);
var backupBlobClient = backupStorageAccount.CreateCloudBlobClient();
var backupContainer = backupBlobClient.GetContainerReference("CONTAINER");
var blobs = backupContainer.ListBlobs().OfType<CloudBlockBlob>().ToList();
foreach (var blob in blobs)
{
string bName = blob.Name;
long bSize = blob.Properties.Length;
string bModifiedOn = blob.Properties.LastModified.ToString();
}
또한 이름별로 특정 파일을 다운로드할 수 있습니다.
// Download file by Name
string fileName = "Your_file_name";
CloudBlockBlob blobFile = backupContainer.GetBlockBlobReference(fileName);
blobFile.DownloadToFile(@"d:\"+ fileName, System.IO.FileMode.Create);
자세한 내용이 포함된 전체 답변.
// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("AzureBlobConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("container_name");
// Retrieve reference to a blob named "test.csv"
CloudBlockBlob blockBlob = container.GetBlockBlobReference("BlobName.tex");
//Gets List of Blobs
var list = container.ListBlobs();
List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
이 기능은 Windows Azure에서 작동합니다.저장소 9.3.3.3.
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
var cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName);
var blobResultSegment = await cloudBlobContainer.ListBlobsSegmentedAsync(continuationToken);
var blobs = blobResultSegment.Results.Select(i => i.Uri.Segments.Last()).ToList();
업데이트:
Azure가 포함된 Azure Blob 파일의 이름 목록을 가져오는 중입니다.저장소.Blobs v12 - 패키지
var storageConnectionString = "DefaultEndpointsProtocol=...........=core.windows.net";
var blobServiceClient = new BlobServiceClient(storageConnectionString);
//get container
var container = blobServiceClient.GetBlobContainerClient("container_name");
List<string> blobNames = new List<string>();
//Enumerating the blobs may make multiple requests to the service while fetching all the values
//Blobs are ordered lexicographically by name
//if you want metadata set BlobTraits - BlobTraits.Metadata
var blobs = container.GetBlobsAsync(BlobTraits.None, BlobStates.None);
await foreach (var blob in blobs)
{
blobNames.Add(blob.Name);
}
여기에서 더 많은 옵션과 예제를 찾을 수 있습니다.
이것은 너겟 패키지에 대한 링크입니다.
그ListBlobs메서드가 더 이상 존재하지 않는 것 같습니다.여기 비동기 버전이 있습니다.
public static async Task<List<string>> ListBlobNamesAsync(CloudBlobContainer container)
{
var blobs = await ListBlobsAsync(container);
return blobs.Cast<CloudBlockBlob>().Select(b => b.Name).ToList();
//Alternate version
//return blobs.Select(b => b.Uri.ToString()).Select(s => s.Substring(s.LastIndexOf('/') + 1)).ToList();
}
public static async Task<List<IListBlobItem>> ListBlobsAsync(CloudBlobContainer container)
{
BlobContinuationToken continuationToken = null; //start at the beginning
var results = new List<IListBlobItem>();
do
{
var response = await container.ListBlobsSegmentedAsync(continuationToken);
continuationToken = response.ContinuationToken;
results.AddRange(response.Results);
}
while (continuationToken != null); //when this is null again, we've reached the end
return results;
}
액세스할 수 있습니다.BlobProperties이름 가져오기:
foreach (object o in list)
{
BlobProperties bp = o as BlobProperties;
if (bp != null)
{
BlobProperties p = _Container.GetBlobProperties(bp.Name);
var name = p.Name; // get the name
}
}
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileShare share = fileClient.GetShareReference(ConfigurationManager.AppSettings["ShareReference"]);
if (share.Exists())
{
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("paths");
if (sampleDir.Exists())
{
IEnumerable<IListFileItem> fileList = sampleDir.ListFilesAndDirectories();
//CloudFile file = sampleDir.GetFileReference(FileName + ext);
//return file;
}
return null;
}
fileList에서 zure 파일의 모든 파일을 가져올 수 있습니다.
우리는 사용해야 합니다.ListBlobsSegmentedAsync()방법, 그러면 우리는 다음 코드를 통해 블롭을 알아낼 수 있습니다.
public CloudBlockBlob GetLatestBlobByBlobNamePattern(CloudBlobContainer container, string blobNamePattern)
{
var root = container.GetDirectoryReference(string.Empty);
var blobsList = root.ListBlobsSegmentedAsync(null);
blobsList.Wait();
BlobResultSegment segment = blobsList.Result;
List<IListBlobItem> list = new List<IListBlobItem>();
list.AddRange(segment.Results);
while (segment.ContinuationToken != null)
{
var blobs = container.ListBlobsSegmentedAsync(segment.ContinuationToken);
blobs.Wait();
segment = blobs.Result;
list.AddRange(segment.Results);
}
var blob = list.Where(x => x.Uri.Segments.Last().Contains(blobNamePattern)).FirstOrDefault();
return (CloudBlockBlob)blob;
}
언급URL : https://stackoverflow.com/questions/23485514/getting-list-of-names-of-azure-blob-files-in-a-container
'programing' 카테고리의 다른 글
| TypeError 가져오기: __init_() 항목이 있는 하위 테이블 뒤에 상위 테이블을 추가할 때 필요한 위치 인수 'on_delete'가 하나 누락되었습니다. (0) | 2023.05.04 |
|---|---|
| Objective-C에서 -init 메서드를 비공개로 할 수 있습니까? (0) | 2023.05.04 |
| Python 3.8 이전에 괄호 없이 반환문에서 별표로 표시된 압축 풀기가 잘못된 구문인 이유는 무엇입니까? (0) | 2023.05.04 |
| Eclipse "서버 위치" 섹션이 비활성화되었으며 Tomcat 설치를 사용하려면 변경해야 합니다. (0) | 2023.05.04 |
| 수정 시 Git 커밋 작성자 날짜 업데이트 (0) | 2023.05.04 |