我有一个软件安装程序作为Azure blob发布,我需要计算它下载了多少次.
问题是它可以从外部引用(从许多下载站点),因此我无法通过网站控制它.
那么...... Windows Azure是否有机制来检测blob下载或注册它们的数量?谢谢!
您有没有考虑过将您的容器设为私有?这可以防止人们直接下载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)
这样做有以下几点:
通过您的应用程序分发带有签名的URL,您可以完全控制,甚至可以查看其他方案,如CAPTCHA,支付下载,应用程序中的高级权限,......
| 归档时间: |
|
| 查看次数: |
2904 次 |
| 最近记录: |