我在與inclomplete水滴正從Azure存儲下載的問題。存儲的文件是圖像。幾乎每個下載的文件都會在底部丟失幾行。我檢查了斑點並且他們正確地上傳了。 我使用下面的代碼從Azure的服務下載的blob:不完整Azure的下載
private async Task Download(CloudBlobClient client)
{
try
{
_media = await _directory.CreateFileAsync(ResourceName, CreationCollisionOption.FailIfExists);
}
catch (Exception)
{
return;
}
using (var stream = await _media.OpenAsync(FileAccessMode.ReadWrite))
{
var blob = await GetBlob(client);
await blob.DownloadToStreamAsync(stream);
_category.NotifyAzureProgress();
await stream.FlushAsync();
}
}
的方法GetBlob()看起來是這樣的:
private async Task<CloudBlockBlob> GetBlob(CloudBlobClient client)
{
CloudBlobContainer container = client.GetContainerReference(ContainerName);
await container.CreateIfNotExistsAsync();
var blob = container.GetBlockBlobReference(ResourceName);
return blob;
}
上傳代碼:
private async Task UploadAsync(CloudBlobClient client)
{
_media = await _directory.GetFileAsync(ResourceName);
using (var stream = await _media.OpenAsync(FileAccessMode.Read))
{
var blob = await GetBlob(client);
await blob.UploadFromStreamAsync(stream);
_category.NotifyAzureProgress();
}
}
謝謝你的幫助!
編輯:我已經意識到我已經錯過了一個細節 - 下載的圖像具有正確的尺寸,但幾行從底部是黑色的 - 它不具有相同的像素作爲源圖像。我已經檢查了MD5哈希值,當它們匹配時,當我通過外部應用程序下載圖像時,它們與我使用上面的代碼下載它們時不匹配。
EDIT2:檢查CloudBlob和輸出流的特性後,我注意到,即使斑給人下載後正確的長度,流通常說的東西稍低。我嘗試下載throught範圍,但無濟於事
哪裏上傳代碼?這些圖像如何進入Blob商店?這可能不是下載。你是如何檢查斑點的? – SliverNinja 2013-05-07 13:07:37
我已通過Azure存儲資源管理器(http://azurestorageexplorer.codeplex.com/)檢查了斑點。我將添加上傳代碼。 – 2013-05-07 13:15:17
您確認使用外部工具下載它們的圖像完好無損嗎?此外,MD5哈希用於下載的內容。(我相信這是在默認情況下在2.0 SDK) – 2013-05-07 13:24:59