11

我已将一些 blob 上传到azure. 当我登录时它们显示在浏览器中,但是当我尝试下载它们时,我收到以下消息:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>BlobNotFound</Code>
<Message>
The specified blob does not exist. RequestId:d3cd1a18-1e48-47bd-9985-4ab7e655eed2 Time:2013-09-19T15:02:16.4158548Z
</Message>
</Error>

屏幕截图浏览(显示 blob)在此处输入图像描述

显示单击下载后发生的情况的屏幕截图 在此处输入图像描述

4

4 回答 4

7

我想我知道你为什么会遇到这个问题。我相信这是门户网站的问题。如果您注意到,您的 blob 的名称是:Tommy French Toals.North Street.1250251并且它包含空格。但是,如果您查看 URL,则名称为:Tommy%2520French%2520Toals.North%2520Street.1250251. 注意 的存在%2520。门户软件正在做的是它执行两次 URL 编码 - 首先,它space在 blob 名称中进行%20URL 编码,然后再次 URL 将%符号编码为%25,这让你搞砸了。

只是为了再次确定,我在我的存储帐户中上传了一个名称中包含空格的文件,当我尝试通过门户下载 blob 时,它失败并出现与您相同的错误。然后我使用存储客户端库为同一个 blob 创建了一个 SAS URI,它工作得非常好。这是我用于创建 SAS URI 的代码:

        CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials("myaccount", "myaccountkey"), true);
        var blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference("mycontainer");
        var blob = blobContainer.GetBlockBlobReference("this file has spaces in its name.txt");
        var sas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
        {
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
            Permissions = SharedAccessBlobPermissions.Read,
        });
        var sasUrl = blob.Uri.AbsoluteUri + sas;

尝试下载名称中不包含空格或任何特殊字符的文件,它应该可以正常工作。

于 2013-09-20T09:16:22.760 回答
1

去和编辑 azure bolb 存储上的容器元数据。将访问私有更改为公共。 Azure Blob 存储容器编辑页面

于 2015-10-27T04:28:26.307 回答
0

检查文件名,区分大小写。纠正案例后,它开始为我工作。

于 2019-06-06T19:16:45.567 回答
0

我能够通过以下方式使其工作:

  • 打开 Azure 存储应用程序并导航到容器/blob
  • 右键单击 blob 并选择“属性...”
  • 从 URL 复制/粘贴服务器路径后的文本

例如,如果 URL 显示为:https://<storageaccount>.windows.net/somecontainer/someblob

要复制/粘贴的文本将是:somecontainer/someblob

于 2020-10-22T03:00:23.050 回答