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

能否通过单次调用上传Azure BLOB及元数据?(Blazor C#场景)

同时上传Azure Blob与元数据的Blazor C#实现

当然可以一次性完成Blob上传和元数据设置,无需两次独立调用。你可以使用Azure Storage SDK中的BlobUploadOptions类,在上传Blob的同时指定元数据。

实现步骤:

  • 确保项目已安装Azure.Storage.Blobs NuGet包
  • 在Blazor组件中注入BlobServiceClient(可通过配置文件配置存储连接字符串)
  • 通过BlobUploadOptions携带元数据,调用UploadAsync完成一次性上传

代码示例:

@inject BlobServiceClient BlobServiceClient
@using Azure.Storage.Blobs.Models
@using Microsoft.AspNetCore.Components.Forms

<input type="file" @ref="fileInput" />
<button @onclick="UploadWithMetadata">上传文件并设置元数据</button>

@code {
    private ElementReference fileInput;

    private async Task UploadWithMetadata()
    {
        var files = fileInput.Value;
        if (files.Length == 0) return;

        var file = files.First();
        var containerClient = BlobServiceClient.GetBlobContainerClient("your-container-name");
        await containerClient.CreateIfNotExistsAsync();

        var blobClient = containerClient.GetBlobClient(file.Name);
        
        // 构造自定义元数据
        var metadata = new Dictionary<string, string>
        {
            { "UploadedBy", "BlazorUser" },
            { "FileCategory", "Documents" },
            { "UploadTime", DateTime.UtcNow.ToString("o") }
        };

        // 配置上传选项,嵌入元数据
        var uploadOptions = new BlobUploadOptions
        {
            Metadata = metadata
            // 可按需添加其他配置,比如访问层级、上传进度回调等
        };

        // 单次调用完成文件与元数据上传
        using var stream = file.OpenReadStream();
        await blobClient.UploadAsync(stream, uploadOptions);
    }
}

关键说明:

  • BlobUploadOptions.Metadata接受IDictionary<string, string>类型的键值对,可添加任意符合规则的自定义元数据
  • 该方式仅发起一次HTTP请求,相比"先传Blob再设元数据"的两次调用,效率更高
  • 代码中通过CreateIfNotExistsAsync确保目标容器存在,避免上传失败
  • 针对大文件,SDK会自动处理分块上传,元数据会自动关联到最终的Blob资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:59:54