4
如果有人有使用DownloadRangeToStream函數的經驗,我將不勝感激。Azure下載blob部分
Here他們說參數「length」是數據的長度,但根據我的經驗,它是該段下載的最高位置,例如, 「length」 - 「offset」=數據的實際長度。
我也很感激,如果有人可以給我一些塊下載blob代碼,因爲前面提到的功能似乎並不奏效。
謝謝你的幫助
如果有人有使用DownloadRangeToStream函數的經驗,我將不勝感激。Azure下載blob部分
Here他們說參數「length」是數據的長度,但根據我的經驗,它是該段下載的最高位置,例如, 「length」 - 「offset」=數據的實際長度。
我也很感激,如果有人可以給我一些塊下載blob代碼,因爲前面提到的功能似乎並不奏效。
謝謝你的幫助
試試這個代碼。它通過將它分成1 MB塊來下載大塊。
static void DownloadRangeExample()
{
var cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;
var containerName = "container";
var blobName = "myfile.zip";
int segmentSize = 1 * 1024 * 1024;//1 MB chunk
var blobContainer = cloudStorageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
var blob = blobContainer.GetBlockBlobReference(blobName);
blob.FetchAttributes();
var blobLengthRemaining = blob.Properties.Length;
long startPosition = 0;
string saveFileName = @"D:\myfile.zip";
do
{
long blockSize = Math.Min(segmentSize, blobLengthRemaining);
byte[] blobContents = new byte[blockSize];
using (MemoryStream ms = new MemoryStream())
{
blob.DownloadRangeToStream(ms, startPosition, blockSize);
ms.Position = 0;
ms.Read(blobContents, 0, blobContents.Length);
using (FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate))
{
fs.Position = startPosition;
fs.Write(blobContents, 0, blobContents.Length);
}
}
startPosition += blockSize;
blobLengthRemaining -= blockSize;
}
while (blobLengthRemaining > 0);
}