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

Nés*_* A. 8 blob azure

我有一个软件安装程序作为Azure blob发布,我需要计算它下载了多少次.

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

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

San*_*tia 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);
    }
Run Code Online (Sandbox Code Playgroud)

这样做有以下几点:

  • Authorize属性确保只有登录的用户才能访问此操作.
  • 您增加了该blob的下载次数
  • 您可以根据名称获得blob的引用
  • 您生成一个签名,允许下载blob 1小​​时
  • 你返回带有签名的blob的url(你也可以将它重定向到blob url)

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


Ric*_*ury 6

您可以使用 存储分析来确定blob的下载量:

Blob用法也可在新管理门户中以图形形式提供:

在此输入图像描述