【问题标题】:Azure blobs - cannot display image store in blob container in MVC 4Azure Blob - 无法在 MVC 4 的 Blob 容器中显示图像存储
【发布时间】:2015-09-04 16:08:17
【问题描述】:

问题背景:

我有一个基本的 MVC 4 站点,并试图显示存储在我的 Azure 云帐户的 blob 存储容器中的图片。我将图像列表Uri's 存储在字符串List 中,并将它们传递给它们应该显示的View

问题:

我似乎无法获取存储在容器中的图像的文件名。

下图显示了 Azure 中的容器。 注意里面存储了一张大小为101.28KB的图片:

这是我试图用来检索 blob 然后读取图像Uri's 的代码:

AzureStorageControllerPics 操作方法:

 public ActionResult Pics()
    {
        var imageList = new List<string>();

        var imagesAzure = new myBlobStorageService();

        var container = imagesAzure.GetCloudBlobContainer();

        foreach (var blobItem in container.ListBlobs())
        {
            imageList.Add(blobItem.Uri.ToString());
        }
        return View(imageList);
    }

myBlobStorageService 类的GetCloudBlobContainer 方法:

 public CloudBlobContainer GetCloudBlobContainer()
    {
        string accountName = "fmfcpics";

        string accountKey = "xxxxxx/yyyyyyyyy/3333333333==";

        StorageCredentials credentials = new StorageCredentials(accountName, accountKey);

        CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);

        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        CloudBlobContainer container = blobClient.GetContainerReference("images");

        if (container.CreateIfNotExists())
        {
            container.SetPermissions(new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob });
        }

        return container;
    }

Pics 查看:

@{
ViewBag.Title = "Pics";
}

<h2>Pics</h2>

@foreach (var item in Model)
{
    <img src="@item" alt="picture" width="200" height="200" />
}

列表中正在传递给图片视图的 Uri 是:https://fmfcpics.blob.core.windows.net/images/myblob,但它没有图像文件名。

对此的任何帮助将不胜感激。

【问题讨论】:

  • 您应该从 blob 返回图像本身。你这样做的方式,直接使用url是行不通的,因为应用程序没有访问存储帐户的权限。
  • 请检查 blob 容器的 ACL 并确保它不是“私有”。
  • 你应该关闭这个问题,因为我回答了你关于 blob 命名的另一个问题,它也恰好回答了这个问题。 TL;DR:您正在返回 blob 名称,即 myblob

标签: asp.net-mvc-4 azure azure-storage azure-blob-storage


【解决方案1】:

正如 Guarav 已经说过的,最好检查一下您的容器不是“私有”的。

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2016-11-18
    • 2019-04-03
    • 1970-01-01
    • 2023-01-03
    • 2016-03-28
    • 2016-09-21
    • 2011-07-28
    • 2019-09-05
    相关资源
    最近更新 更多