How to detect or count Azure blob downloads?

眉间皱痕 提交于 2019-11-29 14:16:13

问题


I have a software installer published as an Azure blob and I need to count how many times it has been downloaded.

The problem is that it can be referenced externally (from many download sites), therefore I cannot control it via website.

So... does Windows Azure have a mechanism to detect blob downloads or registers the count of them? Thanks!


回答1:


Did you ever consider to make your container private? This would prevent people from downloading blobs directly. By doing this you are in full control of who can download the files and for how long they can do this.

Let's assume only registered users can download the file and you're using ASP.NET MVC. Then you could have an action similar to this one:

    [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);
    }

What this does is the following:

  • The Authorize attribute makes sure only users that are logged in can access this action.
  • You increase the download count for that blob
  • You get a reference of the blob based on the name
  • You generate a signature that allows downloading the blob for 1 hour
  • You return the url of the blob with the signature (you could also have it redirect to the blob url)

By handing out the URL with signature through your application you have full control and you can even look at other scenarios like CAPTCHA, paying downloads, advanced permissions in your application, ...




回答2:


You could use storage analytics to figure out how many downloads your blob has had:

Blob usage is also available as a graph in the new management portal:



来源:https://stackoverflow.com/questions/11787579/how-to-detect-or-count-azure-blob-downloads

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!