You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用.NET6读取Azure Blob容器图片并传递至MVC视图?

解答

1. .NET6读取Azure Blob Storage数据

首先在项目中安装Azure Blob存储SDK,执行以下命令:

dotnet add package Azure.Storage.Blobs

在appsettings.json中配置Azure存储连接字符串:

{
  "ConnectionStrings": {
    "AzureStorage": "你的Azure存储连接字符串"
  }
}

通过依赖注入实现Blob读取逻辑,示例控制器代码如下:

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

public class GalleryController : Controller
{
    private readonly BlobServiceClient _blobServiceClient;

    public GalleryController(BlobServiceClient blobServiceClient)
    {
        _blobServiceClient = blobServiceClient;
    }

    public async Task<IActionResult> Index()
    {
        // 获取目标容器
        var containerClient = _blobServiceClient.GetBlobContainerClient("thumbnails");
        await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob);

        // 遍历容器内Blob并收集信息
        var blobList = new List<BlobImage>();
        await foreach (BlobItem blob in containerClient.GetBlobsAsync())
        {
            var blobClient = containerClient.GetBlobClient(blob.Name);
            blobList.Add(new BlobImage
            {
                Name = blob.Name,
                Url = blobClient.Uri.AbsoluteUri
            });
        }

        return View(blobList);
    }
}

// 定义存储Blob信息的模型类
public class BlobImage
{
    public string Name { get; set; }
    public string Url { get; set; }
}

如果容器是私有访问权限,需要生成SAS令牌获取Blob访问链接,替换上述代码中URL生成部分:

var sasBuilder = new BlobSasBuilder(BlobContainerPermissions.Read, DateTimeOffset.UtcNow.AddHours(1))
{
    BlobContainerName = containerClient.Name,
    BlobName = blob.Name
};

var credential = new StorageSharedKeyCredential(containerClient.AccountName, "你的存储账户密钥");
var sasToken = sasBuilder.ToSasQueryParameters(credential).ToString();
var blobUrl = $"{blobClient.Uri.AbsoluteUri}?{sasToken}";

2. 将数据传递到MVC视图并通过AngularJS展示

传递数据到视图

上述控制器中已通过return View(blobList);将Blob数组作为强类型模型传递到视图,视图顶部声明模型类型:

@model List<BlobImage>

也可通过ViewBag传递数据:

ViewBag.BlobImages = blobList;
return View();

用AngularJS展示图片画廊

在视图中引入AngularJS库(可下载本地文件或使用官方资源),然后编写Angular逻辑绑定数据:

@{
    ViewData["Title"] = "图片画廊";
}

<script src="angular.min.js"></script>

<div ng-app="galleryApp" ng-controller="galleryCtrl">
    <div class="gallery-item" ng-repeat="img in blobImages">
        <img ng-src="{{img.Url}}" alt="{{img.Name}}" />
        <p>{{img.Name}}</p>
    </div>
</div>

<script>
    var app = angular.module('galleryApp', []);
    app.controller('galleryCtrl', function($scope) {
        // 将.NET传递的模型转为Angular可用的数组
        @if (Model != null)
        {
            <text>
            $scope.blobImages = @Html.Raw(Json.Serialize(Model));
            </text>
        }
        // 若使用ViewBag则替换为:
        // $scope.blobImages = @Html.Raw(Json.Serialize(ViewBag.BlobImages));
    });
</script>

<style>
    .gallery-item {
        display: inline-block;
        margin: 10px;
        text-align: center;
    }
    .gallery-item img {
        width: 200px;
        height: 150px;
        object-fit: cover;
        border-radius: 4px;
        border: 1px solid #eee;
    }
</style>

内容的提问来源于stack exchange,提问作者AchilleScript

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:35:39