我有一个作为 Azure blob 发布的软件安装程序,我需要计算它被下载了多少次。
问题是它可以被外部引用(从许多下载站点),因此我无法通过网站控制它。
那么... Windows Azure 是否有一种机制来检测 blob 下载或注册它们的计数?谢谢!
您是否考虑过将您的容器设为私有?这将阻止人们直接下载 blob。通过这样做,您可以完全控制谁可以下载文件以及他们可以下载多长时间。
假设只有注册用户可以下载文件并且您使用的是 ASP.NET MVC。然后你可以有一个类似于这个的动作:
[Authorize]
public ActionResult Download(string blobName)
{
CountDownload(blobName);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
var blob = container.GetBlobReference(blobname);
var sas = blob.GetSharedAccessSignature
(
new SharedAccessPolicy
{
Permissions = SharedAccessPermissions.Read,
SharedAccessStartTime = DateTime.Now.ToUniversalTime(),
SharedAccessExpiryTime = DateTime.Now.ToUniversalTime().AddHours(1)
}
);
return Content(blob.Uri.AbsoluteUri + sas);
}
它的作用如下:
通过您的应用程序分发带有签名的 URL,您可以完全控制,您甚至可以查看其他场景,例如验证码、付费下载、应用程序中的高级权限......
您可以使用 存储分析来确定您的 blob 有多少下载:
Blob 使用情况也可在新管理门户中以图表形式提供: