BLOBコンテナーにサブディレクトリを作成する方法
例えば、
私のblobコンテナで http://veda.blob.core.windows.net/document/
いくつかのファイルを保存すると、
さて、サブディレクトリを作成する方法
ファイルを保存できるように
Egonの発言に追加するには、「folder/1.txt」という名前のBLOBを作成するだけで機能します。ディレクトリを作成する必要はありません。
実際には、コンテナのレイヤーは1つだけです。階層化されたストレージのような「ファイルシステム」を仮想的に作成できますが、実際にはすべてが1つの層、つまりコンテナになります。
ストレージのような仮想の「ファイルシステム」を作成するには、「/」を含むblob名を使用して、保存方法を自由に変更できます。また、素晴らしいのは、「/」までの部分的な文字列を指定することで、仮想レベルでblobを検索できることです。
これらの2つのことは、パスに「/」を追加し、検索用の部分文字列を追加して、仮想「ファイルシステム」ストレージを一緒に作成します。
@ afr0によって、フォルダーをフィルターする方法を尋ねるコメントがあります。
GetDirectoryReference
を使用するか、コンテナBLOBをループして型をチェックする2つの方法があります。以下のコードは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
Microsoft Azure Storage Explorer を使用する場合、コンテナーにフォルダーを作成できる[新しいフォルダー]ボタンがあります。これは実際には仮想フォルダーです。
サブディレクトリを作成する必要はありません。次のコードのように、blobコンテナーを作成し、変数filenameのようなファイル名を使用するだけです。
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ストレージには実際のフォルダー管理はありません。
ファイル名に「/」を使用してファイルシステムの一部の機能を実現できますが、これには多くの制限があります(たとえば、「フォルダー」の名前を変更する必要がある場合はどうなりますか?)。
一般的なルールとして、ファイルを可能な限りフラットコンテナーに保持し、エンドユーザーに公開したい構造をアプリケーションに管理させます(たとえば、ネストされたフォルダー構造を管理します)- 私のデータベース内、各ファイルのレコードを持ち、container-nameとfile-nameを使用してBLOBを参照します)。
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サイトを有効にすると、$ 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