我在与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