gpt4 book ai didi

azure - 如何检测或计数 Azure blob 下载?

转载 作者:行者123 更新时间:2023-12-04 05:40:57 29 4
gpt4 key购买 nike

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

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

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

最佳答案

您是否考虑过将您的容器设为私有(private)?这将阻止人们直接下载 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,您可以完全控制,甚至可以查看其他场景,例如验证码、付费下载、应用程序中的高级权限,...

关于azure - 如何检测或计数 Azure blob 下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com