[c#] Microsoft Azure : Blob 컨테이너에서 하위 디렉터리를 만드는 방법

Blob 컨테이너에 하위 디렉터리를 만드는 방법

예를 들면

내 blob 컨테이너 http://veda.blob.core.windows.net/document/

일부 파일을 저장하면

http://veda.blob.core.windows.net/document/1.txt

http://veda.blob.core.windows.net/document/2.txt

이제 하위 디렉터리를 만드는 방법

http://veda.blob.core.windows.net/document/folder/

파일을 저장할 수 있도록

http://veda.blob.core.windows.net/document/folder/1.txt



답변

Egon이 말한 내용을 추가하려면 “folder / 1.txt”라는 blob을 생성하면됩니다. 디렉토리를 만들 필요가 없습니다.


답변

실제로 컨테이너의 단일 레이어 만 있습니다. 계층화 된 스토리지와 같은 “파일 시스템”을 가상으로 만들 수 있지만 실제로는 모든 것이 하나의 계층, 즉 그 안에있는 컨테이너에 있습니다.

저장소와 같은 가상 “파일 시스템”을 만들려면 ‘/’가 포함 된 Blob 이름을 사용하여 저장하는 방식으로 원하는 작업을 수행 할 수 있습니다. 또한 가장 좋은 점은 ‘/’까지 부분 문자열을 제공하여 가상 수준에서 blob을 검색 할 수 있다는 것입니다.

경로에 ‘/’를 추가하고 검색을위한 부분 문자열을 추가하는이 두 가지가 함께 가상 “파일 시스템”스토리지를 생성합니다.


답변

@ afr0이 폴더 필터링 방법을 묻는 댓글이 있습니다.

GetDirectoryReference컨테이너 Blob을 통해 또는 루프를 사용 하고 유형을 확인하는 두 가지 방법이 있습니다 . 아래 코드는 C #입니다.

CloudBlobContainer container = blobClient.GetContainerReference("photos");

//Method 1. grab a folder reference directly from the container
CloudBlobDirectory folder = container.GetDirectoryReference("directoryName");

//Method 2. Loop over container and grab folders.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
    if (item.GetType() == typeof(CloudBlobDirectory))
    {
        // we know this is a sub directory now
        CloudBlobDirectory subFolder = (CloudBlobDirectory)item;

        Console.WriteLine("Directory: {0}", subFolder.Uri);
    }
}

자세한 내용은 http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori 를 읽으십시오 .


답변

Azure Portal에는 파일을 업로드하는 동안 아래 옵션이 있습니다.

여기에 이미지 설명 입력


답변

당신이 사용하는 경우 마이크로 소프트 애저 저장소 탐색기를 , 당신이 컨테이너에 폴더를 만들 수있는 “새 폴더”버튼이 있습니다. 이것은 실제로 가상 폴더입니다.

여기에 이미지 설명 입력


답변

하위 디렉터리를 만들 필요가 없습니다. 그냥 변수와 같은 덩어리 용기와 사용 파일 이름을 만들 파일 이름 코드를 아래와 같이를 :

string filename = "document/tech/user-guide.pdf";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);
blob.StreamWriteSizeInBytes = 20 * 1024;
blob.UploadFromStream(fileStream); // fileStream is System.IO.Stream


답변

@Egon이 위에서 언급했듯이 BLOB 저장소에는 실제 폴더 관리가 없습니다.

파일 이름에 ‘/’를 사용하여 파일 시스템의 일부 기능을 얻을 수 있지만 여기에는 많은 제한이 있습니다 (예 : “폴더”의 이름을 변경해야하는 경우 어떻게됩니까?).

일반적으로 컨테이너에서 파일 을 가능한평평 하게 유지 하고 최종 사용자에게 노출하려는 모든 구조를 애플리케이션에서 관리하도록합니다 (예 : 내 데이터베이스에서 중첩 된 폴더 구조를 관리하고 각각에 대한 레코드가 있음). 파일, 컨테이너 이름 및 파일 이름을 사용하여 BLOB 참조).