如何检测或统计Azure blob下载?

时间:2012-08-03 00:11:17

标签: azure blob

我有一个软件安装程序作为Azure blob发布,我需要计算它下载的次数。

问题是它可以在外部引用(来自许多下载站点),因此我无法通过网站控制它。

那么...... Windows Azure是否有机制来检测blob下载或注册它们的数量? 谢谢!

2 个答案:

答案 0 :(得分:9)

您有没有考虑过将您的容器设为私有?这可以防止人们直接下载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);
    }

这是做什么的:

  • “授权”属性确保只有登录的用户才能访问此操作。
  • 您增加了该blob的下载次数
  • 您将根据名称
  • 获得blob的引用
  • 您生成的签名允许下载blob 1小​​时
  • 您使用签名返回blob的网址(您也可以将其重定向到blob网址)

通过您的应用程序分发带有签名的URL,您可以完全控制,甚至可以查看其他方案,如CAPTCHA,付费下载,应用程序中的高级权限,......

答案 1 :(得分:6)

您可以使用storage analytics来确定您的blob有多少下载量:

Blob用法也可作为新管理门户中的图表使用:

enter image description here