Nice programing

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

nicepro 2020. 10. 20. 08:11
반응형

Windows 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에는 파일을 업로드하는 동안 아래 옵션이 있습니다.

여기에 이미지 설명 입력


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

여기에 이미지 설명 입력


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

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

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


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

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

Node.JS의 CoffeeScript에서 수행하는 방법은 다음과 같습니다.

blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
    if err
        console.log 'failed to create path', err
    else
        console.log 'created path', path, result

Azure Sample first-serverless-app 을 시도하는 동안 비슷한 문제가 발생했습니다 .
다음은 $ web 앞의 \를 제거하여 해결 방법에 대한 정보입니다.

참고 : $ web 컨테이너는 정적 웹 사이트를 활성화하는 동안 자동으로 생성되었습니다. $ root 컨테이너는 어디에서도 본 적이 없습니다.

//getting Invalid URI error while following tutorial as-is
az storage blob upload-batch -s . -d \$web --account-name firststgaccount01

//Remove "\" @destination param
az storage blob upload-batch -s . -d $web --account-name firststgaccount01

참고 URL : https://stackoverflow.com/questions/2619007/windows-azure-how-to-create-sub-directory-in-a-blob-container

반응형