2017-04-25 37 views
0

フォルダ全体を空のストレージにアップロードしたいと思います。 私が使用してファイルをアップロードすることができます知っている:フォルダをAzureストレージにアップロードする方法

blobReference.UploadFromFile(fileName); 

をしかし、フォルダ全体を(再帰的に)アップロードする方法を見つけることができませんでした。 このような方法はありますか?あるいは、サンプルコードですか?

ありがとう

+1

私はこのような方法はないと思います。紺色の上に平らな階層があり、すべてがコンテナ内の塊であるからです。各ファイルを繰り返し処理してアップロードする必要があります。 – Sajal

+0

これは当てはまりませんが、Azureはブロブコンテナ内のサブフォルダをサポートしています。 – Simon

+2

'Azureはブロブコンテナ内のサブフォルダをサポートしています。 ' - そうではありません。サブフォルダは単にBLOBの名前のプレフィックスです。 Azure Blob Storageに空のサブフォルダを作成することはできません。 –

答えて

5

フォルダ構造が単純にファイル名の一部になります

string myfolder = "datadir"; 
string myfilename = "mydatafile"; 
string fileName = String.Format("{0}/{1}.csv", myfolder, myfilename); 
CloudBlockBlob blob = container.GetBlockBlobReference(fileName); 

あなたはこの例のようにアップロードした場合ファイルは 'datadir'フォルダのコンテナに表示されます。あなたがアップロードするディレクトリ構造をコピーするためにこれを使用することができることを意味

foreach (string file in Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)) { 
    // file would look like "C:\dir1\dir2\blah.txt" 

    // Don't know if this is the prettiest way, but it will work: 
    string cloudfilename = file.Substring(3).Replace('\\', '/'); 

    // get the blob reference and push the file contents to it: 
    CloudBlockBlob blob = container.GetBlockBlobReference(cloudfileName); 
    blob.UploadFromFile(file); 
  } 
+0

パーフェクト - それは働いた!ありがとう – Dafna

+0

どのように反対に行うには?ストレージからフォルダをダウンロードしていますか? – Dafna

1

コマンドラインには、1回の呼び出しで複数のファイルを一括アップロードするオプションがありません。しかし、あなたは見つけるか、例えば、このような複数のファイルをアップロードするためのループを使用することができ、次のいずれか

#!/bin/bash 

export AZURE_STORAGE_ACCOUNT='your_account' 
export AZURE_STORAGE_ACCESS_KEY='your_access_key' 

export container_name='name_of_the_container_to_create' 
export source_folder=~/path_to_local_file_to_upload/* 


echo "Creating the container..." 
azure storage container create $container_name 

for f in $source_folder 
do 
    echo "Uploading $f file..." 
    azure storage blob upload $f $container_name $(basename $f) 
    cat $f 
done 

echo "Listing the blobs..." 
azure storage blob list $container_name 

echo "Done" 
1

あなたは、高性能、拡張性と信頼性でブロブディレクトリの転送はサポートMicrosoft Azure Storage DataMovement Libraryを試すことができます。さらに、転送中に取り消しと再開をサポートします。 Hereは、Azure Blob Storageにフォルダをアップロードするサンプルです。

関連する問題