我有一个软件安装程序作为Azure blob发布,我需要计算它下载的次数。
问题是它可以在外部引用(来自许多下载站点),因此我无法通过网站控制它。
那么...... Windows Azure是否有机制来检测blob下载或注册它们的数量? 谢谢!
答案 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);
}
这是做什么的:
通过您的应用程序分发带有签名的URL,您可以完全控制,甚至可以查看其他方案,如CAPTCHA,付费下载,应用程序中的高级权限,......
答案 1 :(得分:6)