在部分azure blob完成之前开始下载

时间:2016-03-07 03:42:30

标签: c# .net azure azure-storage

是否有一种blob(块,页面等)允许使用C#api?机器X可以将文件上传到azure blob端点,并且机器Y可以实时读取文件。在我看来,像块blob一样无法工作,因为你需要在阻止列表之前查询http端点,但是有没有办法查询未提交的块并事先下载它们?

实践中的一个示例是,用户机器与服务器进行握手,从服务器获取写入共享访问令牌以及上载文件的权限。客户端#1机器开始上传 - 现在说,第二台客户机从服务器请求文件,但客户机#1尚未完成上传。在这种情况下,客户端#2将从服务器获取相关详细信息,并获得只读共享访问令牌,然后即使上载尚未完成,也会开始读取文件。

1 个答案:

答案 0 :(得分:0)

使用Block Blobs我不认为可以在上传时继续下载blob。这只是因为此时没有存储任何内容。当您为blob上传块时,Azure存储只是将字节块存储在某个位置。

只有在您提交阻止列表时,Azure存储才会通过在提交阻止列表操作中根据请求有效负载排列字节块来创建阻止blob。即使Azure存储lets to see the block list before it is committed,它也不会公开任何API来读取块的内容。

我不认为Page Blob是您方案中正确的blob类型(与Append Blob相同),即使您编写页面的那一刻它在blob和其他调用者中提交可以get the page ranges并开始下载存储在这些页面中的数据。但是,页面blob大小必须是512字节的倍数,并且应用程序中上传的所有文件都不符合此要求。