私が知る限り、BLOBストレージはダウンロード数を直ちに取得することをサポートしていません。
この要件についてfeedbackを追加することをお勧めします。
ここに2つの回避策があります。
1.クライアント側。
アプリケーションを作成すると、ダウンロード数をカウントできます。
ユーザがダウンロードボタンをクリックした場合、ダウンロード数(blobファイルのマテリアルに保存することができます)を計算して計算します。
注意:紺碧のブロブには公開と個人の許可があります。ブロブが公開されている場合は、URLからブロブを直接ダウンロードすることができます。だから、私はあなたがプライベートにBLOBのアクセス許可を設定しようとすることができますお勧めします。これを行うことにより、ダウンロード回数tが正しい。
2.サーバー側。あなたはAzureストレージアカウントの診断ブロブのログを有効にした場合
は、私の知る限りでは、それはブロブの各読み取り/書き込み/削除操作をログに記録します。
これらの操作を読み取ることにより、私はあなたがAzureブロブストレージに保存されている与えられたブロブのダウンロード(のGetBlob操作)回数を得ることができると思います。
これらのログは$ logコンテナに格納されています。
注意:ストレージ・ログは、サイズ制限(20TB)および日付限界(MAX 365)を有しています。ですから、ログを検索するにはtimertrigger webjobを実行してみることをお勧めします。 このWebジョブでは、AzureストレージSDKのCloudAnalyticsClientを使用してログを取得し、番号とスキャンした日付をファイルのメタデータに格納できます。 timertriggerのwebjobを実行するたびに、あなただけの最後にスキャン日からコンテキストを検索する必要があります。(この回避策は、いくつかの遅延を有することができる。)ログレコードを取得するためにCloudAnalyticsClientを使用する方法についての
詳細を、あなたはを参照してください可能性があり以下のサンプルコード:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("");
CloudAnalyticsClient c1 = storageAccount.CreateCloudAnalyticsClient();
DateTimeOffset starttime = DateTime.Now.AddHours(-6);
DateTimeOffset endtime = DateTime.Now;
var r1 = c1.ListLogRecords(Microsoft.WindowsAzure.Storage.Shared.Protocol.StorageService.Blob, starttime, endtime).ToList();
if (r1 != null)
{
Console.WriteLine("Start");
}
int i = 0;
foreach (var item in r1)
{
if (item.RequestUrl.ToString().Contains("Penjs.png(your file name)"))
{
Console.WriteLine(string.Format("AuthenticationType : {0} , ClientRequestId : {1} , ReferrerHeader : {2} , RequestUrl : {3} , RequestStatus : {4} , HttpStatusCode : {5} , OperationType : {6}", item.AuthenticationType, item.ClientRequestId, item.ReferrerHeader, item.RequestUrl, item.RequestStatus, item.HttpStatusCode, item.OperationType));
Console.WriteLine("----------------------------------");
}
//count the get blob number
if (item.RequestUrl.ToString().Contains("Penjs.png") && item.OperationType == "GetBlob" && item.RequestStatus =="Success")
{
i++;
}
}
Console.WriteLine("Get/Dowanload blob time : " + i);
Console.WriteLine("Complete");
結果: