是否可以从.NET随机访问Azure Blob存储Blob? (即返回的stream.CanSeek == true和stream.Seek()在没有缓存内存中的整个文件的情况下工作)
我无法尝试+我已经搜索了MSDN并使用了Google,但我找不到答案。希望有人在这里知道。
(最好答案是MSDN的链接...)
答案 0 :(得分:2)
这个问题的答案是here:
你可以在一个页面blob中寻找 - 它有明确的支持 BlobWriteStreamBase 类。
我想你也可以阅读&写入块blob的指定部分 使用HTTP
Range
标头,这实际上是相同的 寻求。但我认为你必须自己实现它。
简而言之,您需要做的是实现一个适配器:您自己的流,它在引擎盖下调用DownloadRangeToStream之类的方法,但它本身就像一个流本身。
答案 1 :(得分:1)
如果我正确理解你的问题,你只想阅读一部分blob。例如,如果你有一个1 GB的blob,你想从该blob中读出1 MB的数据而不先读取内存中的整个1 GB数据。
如果是这种情况,那么您可以使用DownloadRangeToStream
或DownloadRangeToStreamAsync
方法。在这两种方法中,您都可以指定偏移量(即起点)和要从该偏移量读取的数据长度。