Microsoft Azure:BLOB 컨테이너에 하위 디렉토리를 만드는 방법
BLOB 컨테이너에 하위 디렉토리를 만드는 방법
예를들면,
내 BLOB 컨테이너에 http://veda.blob.core.windows.net/document/
파일을 저장하면
이제 서브디렉토리를 작성하려면
파일을 저장할 수 있도록
Egon이 말한 것에 덧붙여, 「folder/1.txt」라고 하는 BLOB를 작성하기만 하면 동작합니다.디렉토리를 작성할 필요가 없습니다.
실제로 컨테이너의 층은 1개뿐입니다.계층형 스토리지와 같은 "파일 시스템"을 가상으로 생성할 수 있지만, 실제로는 모든 것이 컨테이너인 단일 계층에 포함됩니다.
스토리지와 같은 가상 "파일 시스템"을 생성하기 위해 '/'이 포함된 BLOB 이름을 사용하여 저장 방법을 원하는 대로 수행할 수 있습니다.또한 가상 수준에서 부분 문자열을 지정함으로써 //'까지 BLOB를 검색할 수 있다는 점도 좋은 점입니다.
경로에 '/'를 추가하고 검색을 위한 부분 문자열을 추가하는 이 두 가지가 함께 가상 "파일 시스템" 스토리지를 생성합니다.
폴더 필터링 방법을 묻는 @afr0의 코멘트가 있습니다.
은 두 .GetDirectoryReference
또는 컨테이너 블럽을 루프하여 유형을 확인합니다.는 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에서는 파일을 업로드 할 때 다음 옵션을 사용할 수 있습니다.
Microsoft Azure Storage Explorer를 사용하는 경우 컨테이너에 폴더를 만들 수 있는 "새 폴더" 버튼이 있습니다.이것은 실제로 가상 폴더입니다.
만들 .sub directory
성 . .성만 . . . . 。blob container
다음 코드와 같이 변수 파일 이름과 같은 파일 이름을 사용합니다.
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
UI 포털 Way to do를 추가하려고 했습니다.폴더 구조를 작성하려면 각 파일의 전체 경로를 사용하여 작성해야 합니다.
[ Upload BLOB ]를 클릭하여 [Advanced]를 전개하여 [Upload to Folder]라고 하는 경로를 지정해야 합니다.
업로드할 폴더 자산이 있으며 폴더의 내용은 다음과 같습니다.
또한 main.js라는 이름의 js폴더에 폴더가 있는 경우 upload to folder에 assets/js 경로를 입력해야 합니다.각 파일에 대해 이 작업을 수행해야 합니다.파일이 많은 경우 프로그래밍 방식으로 수행하는 것이 좋습니다.
위의 @Egon에서 언급했듯이 BLOB 스토리지에는 실제 폴더 관리가 없습니다.
파일 이름에 있는 '/'을(를) 사용하여 파일 시스템의 일부 기능을 수행할 수 있지만, 여기에는 많은 제한이 있습니다(예: "폴더" 이름을 변경해야 하는 경우 어떻게 됩니까?).
일반적으로 컨테이너 내의 파일을 가능한 한 평평하게 유지하고 최종 사용자에게 표시할 구조를 응용 프로그램에서 관리하도록 합니다(예를 들어 데이터베이스의 중첩된 폴더 구조를 관리하고 각 파일에 대한 레코드를 가지며 컨테이너 이름과 파일 이름을 사용하여 BLOB를 참조합니다.
디렉토리로 하고 있는
에 준거한
<PackageReference Include="Azure.Storage.Blobs" Version="12.10.0"/>
디렉토리 또는 폴더 경로를 백슬래시로 쉽게 구분할 수 있습니다.이 경우 자동으로 생성됩니다.예:
public async Task UploadFile(string env, string filePath, string filename, Guid companyId, Guid assetId, string baseKey)
{
var blobContainer = blobServiceClient.GetBlobContainerClient("graphs-data");
if (!blobContainer.Exists())
{
blobContainer.Create();
}
var blobClient = blobContainer.GetBlobClient($"input/{env}/{companyId}/iotasset/{assetId}/{baseKey}/{filename}");
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
await blobClient.UploadAsync(fs, overwrite: true);
}
Azure 스토리지 탐색기의 결과 보기
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
Jenkins 파이프라인에서 이 작업을 수행해야 했기 때문에 파일을 루트 컨테이너 폴더가 아닌 특정 폴더 이름으로 업로드해야 했습니다.폴더 또는 폴더 1/folder2일 수 있는 --destination-path를 사용합니다.
az storage blob upload-batch --account-name $AZURE_STORAGE_ACCOUNT --destination ${CONTAINER_NAME} --destination-path ${VERSION_FOLDER} --source ${BUILD_FOLDER} --account-key $ACCESS_KEY
이것이 도움이 되기를 바란다
폴더/디렉토리를 작성하기 위한 직접 옵션은 없습니다.그러나 폴더에 업로드하려면 파일을 업로드하는 동안 미리보기 섹션 아래에 폴더 이름을 전달해야 합니다.예를 들어 이미지를 폴더라는 이름의 자산에 업로드하는 경우 업로드 창은 다음과 같습니다.여기에 이미지 설명을 입력합니다.
그러면 폴더 이름 자산이 생성되고 해당 폴더에 파일이 업로드됩니다.또한 폴더 이름과 파일 이름은 대소문자를 구분합니다.
CloudBlobContainer container = new CloudBlobContainer(new Uri(sasUri));
CloudBlockBlob blob = container.GetBlockBlobReference(filePathInSyncFolder);
LocalFileSysAccess.LocalFileSys uploadfromFile = new LocalFileSysAccess.LocalFileSys();
uploadfromFile.uploadfromFilesystem(blob, localFilePath, eventType);
제 생각에는 CoffeeScript on Node가 더 간단합니다.JS:
blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
if err
console.log 'failed to create path', err
else
console.log 'created path', path, result
언급URL : https://stackoverflow.com/questions/2619007/microsoft-azure-how-to-create-sub-directory-in-a-blob-container
'source' 카테고리의 다른 글
Excel(.XLS 및 .X)을 작성하려면Microsoft Office 를 인스톨 하지 않고, C# 에 LSX) 파일을 인스톨 할 수 있습니까? (0) | 2023.02.07 |
---|---|
C++의 "-->" 연산자는 무엇입니까? (0) | 2023.02.06 |
JAR 파일 외부에서 속성 파일을 읽습니다. (0) | 2023.01.29 |
PHP는 에 상당합니다.NET/Java의 toString() (0) | 2023.01.29 |
루프 후 문자열 버퍼/빌더 지우기 (0) | 2023.01.29 |