さまざまな形式 (jpg、png、gif) とサイズ (2 ~ 40 KB) の約 110,000 枚の画像がハード ドライブにローカルに保存されています。それらを Azure Blob Storage にアップロードする必要があります。これを行っている間、いくつかのメタデータと BLOB の ContentType を設定する必要がありますが、それ以外はそのまま一括アップロードになります。
私は現在、一度に 1 つの画像のアップロードを処理するために次を使用しています (5 ~ 10 の同時タスクで並列処理)。
static void UploadPhoto(Image pic, string filename, ImageFormat format)
{
//convert image to bytes
using(MemoryStream ms = new MemoryStream())
{
pic.Save(ms, format);
ms.Position = 0;
//create the blob, set metadata and properties
var blob = container.GetBlobReference(filename);
blob.Metadata["Filename"] = filename;
blob.Properties.ContentType = MimeHandler.GetContentType(Path.GetExtension(filename));
//upload!
blob.UploadFromStream(ms);
blob.SetMetadata();
blob.SetProperties();
}
}
アップロードをできるだけ速く処理するために採用できる別の手法があるかどうか疑問に思っていました。この特定のプロジェクトでは、あるシステムから別のシステムに大量のデータをインポートする必要があり、顧客の理由により、できるだけ迅速に行う必要があります。