Azure Blob Storage 临时文件URL

4
我已经将PDF文件保存在Azure Blob Storage中,我想在我的网站上显示这些文件,但是当文件在HTML上渲染时,其链接应该被停用,这意味着没有人可以再次使用该链接下载该文件。在Azure Blob Storage中是否有可能实现这一点?

互联网上有许多与此相关的文章,例如:https://learn.microsoft.com/en-us/azure/storage/blobs/security-recommendations。请查看并提出问题,比如你卡在哪里或者遇到了什么问题等。 - Vivek Mishra
2个回答

12

您可以使用 Blob 策略来实现此目的:

        CloudStorageAccount account = CloudStorageAccount.Parse("yourStringConnection");
        CloudBlobClient serviceClient = account.CreateCloudBlobClient();

        var container = serviceClient.GetContainerReference("yourContainerName");
        container
            .CreateIfNotExistsAsync()
            .Wait();

        CloudBlockBlob blob = container.GetBlockBlobReference("test/helloworld.txt");
        blob.UploadTextAsync("Hello, World!").Wait();

        SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy();

        // define the expiration time
        policy.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1);

        // define the permission
        policy.Permissions = SharedAccessBlobPermissions.Read;

        // create signature
        string signature = blob.GetSharedAccessSignature(policy);

        // get full temporary uri
        Console.WriteLine(blob.Uri + signature);

1
如果我理解正确,您正在寻找用于Azure Blobs的单次使用链接。原生情况下,Azure存储中没有此功能。您需要编写代码来实现类似的功能,其中您将跟踪链接被使用的次数,并在超过限制时不处理该链接。

如何跟踪链接被使用的次数?如果有人尝试在浏览器标签上使用我的存储文件链接,那么如何验证它? - Abdul Rehman
2
请使用以下链接,它非常有用,可以获取带有共享访问签名的临时Azure Blob文件URL。https://pedro.digitaldias.com/?p=331 - Abdul Rehman
1
这提供了一个链接,该链接在一定时间后过期,而不是在一定使用次数后过期。 - Gaurav Mantri
我的文件最多需要10秒钟才能加载,因此我会获得30秒的URL,这样我的文件将被访问大约3到5次。 - Abdul Rehman
如果您愿意将其视为可接受的风险,那么可以使用共享访问签名,并提供在短时间内过期的链接。 - Gaurav Mantri
目前我没有选择为某些用途生成URL。如果你找到了什么,请分享一下。 - Abdul Rehman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接