【问题标题】:empty image from blob storage来自 blob 存储的空图像
【发布时间】:2018-02-08 10:45:59
【问题描述】:

这就是我尝试将图像上传到 Azure 博客存储,然后上传位于那里的空文件的方式。

我尝试在这里上传这张图片:

CloudStorageAccount storageAccount = new CloudStorageAccount(new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(Accountname, KeyValue), true);
            // Create the blob client.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            // Retrieve a reference to a container.
            CloudBlobContainer container = blobClient.GetContainerReference(ContainerValue);

            CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
            using (var f = System.IO.File.Open(model.FileToUpload.FileName, FileMode.Create))
            {
                await blockBlob.UploadFromStreamAsync(f);
            }

但是,如果我尝试打开这张图片,请说这个。

从丹麦语到英语:我们无法打开这个文件

【问题讨论】:

  • 如果文件为空,你希望打开什么?
  • 我检查这个文件不是空的。 @juunas
  • 啊,对不起,误解了你的问题标题:)
  • @juunas async Task
  • System.IO.File.Open 调用正在使用 FileMode.Create。这是创建或覆盖文件。我认为这应该是 FileMode.Open。​​

标签: azure azure-blob-storage


【解决方案1】:

正如 Marco 所说,FileMode.Create 指定操作系统应该创建一个新文件。如果文件已经存在,它将被覆盖。 更多详情,您可以参考这个article

根据您提供的图片,您的 blob 大小为 0 B。所以,你总是找不到文件并打开它。 FileMode 指定操作系统应如何打开文件。

所以我建议你可以删除它并使用 OpenRead 打开现有文件进行阅读。您可以参考以下代码:

using (var f = System.IO.File.OpenRead(model.FileToUpload.FileName))
            {
                await blockBlob.UploadFromStreamAsync(f);
            }

【讨论】:

  • 错误是:我尝试上传此文件后出现 FileNotFoundException。
  • 您是否使用 OpenRead 打开文件?你从哪里得到未找到的异常?
  • 是的,我愿意。using (var f = System.IO.File.OpenRead(fValue)) { await blockBlob.UploadFromStreamAsync(f); }
  • 您可以尝试将您的 blob 名称设置为特定名称。并将图片的具体路径设置为 fValue 以检查您是否已上传图片。此外,您可以调试代码以检查文件是否具有文件长度。
猜你喜欢
  • 2022-01-19
  • 2017-05-16
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
相关资源
最近更新 更多