【问题标题】:How to Uploading Base64 / byte[] Image to Azure Blob with ASP.NET Core 6 MVC using C#?如何使用 C# 使用 ASP.NET Core 6 MVC 将 Base64 / byte [] 图像上传到 Azure Blob?
【发布时间】:2022-10-16 14:17:50
【问题描述】:

这是我的代码 IFormFile。

public static async Task<string> UploadFileToBlobStorage(IFormFile file)
        {
            string container = "abccontainer";
            string storageAccount_connectionString = "DefaultEndpointsProtocol=https;AccountName=abc/aXQUORlrTMNkxaUFPDDlLEW/mwe5Fihy+zl4p+ysF6Y+9JiMud8khH+AStEDb6DA==;EndpointSuffix=core.windows.net";
            BlobContainerClient blobContainerClient = new(storageAccount_connectionString, container);

            BlobClient blob = blobContainerClient.GetBlobClient(Path.GetFileName(file.FileName));

            var mimeTypes = GetFileContentType(Path.GetFileName(file.FileName));
            var header = new BlobHttpHeaders
            {
                ContentType = mimeTypes
            };

            await blob.UploadAsync(file.OpenReadStream(), header);

            return blob.Uri.AbsoluteUri;
        }

但是,我想将 bytes[] 上传到 blob 存储。为此,我将只传递 byte[] 数组,它应该上传。

我能怎么做 ?

public static async Task<string> UploadFileToBlobStorage(byte[] array)
        {
            return blob.Uri.AbsoluteUri;
        }

【问题讨论】:

    标签: c# asp.net-core-mvc azure-blob-storage


    【解决方案1】:

    UploadAsync 有一个 overload 接受 BinaryData 对象。

    您应该能够像这样重写您的代码:

    BlobClient blob = blobContainerClient.GetBlobClient("somename.txt"); // update as necessary
    
    var header = new BlobHttpHeaders
    {
        ContentType = "text/plain" // update as necessary
    };
    
    
    byte[] sourceData = getSourceData();
    BinaryData uploadData = new BinaryData(sourceData);
    await blob.UploadAsync(uploadData, new BlobUploadOptions { HttpHeaders = header });
    

    【讨论】:

    • 但是 BlobClient blob = blobContainerClient.GetBlobClient(Path.GetFileName(file.FileName)); blob ..这需要文件名...但我没有。那我该怎么办?
    • @GOPAL 您正在使用 Path.GetFileName ,它只是在 / 或 之后获取存储在 file.FileName 中的字符串的最后一部分。所以“c:mycomputerob est.txt”会变成“test.txt”等等。你基本上是在问我“上传后我应该怎么称呼我的文件?”恐怕我不能告诉你在 Azure 的 Blob 存储上调用什么文件——你必须决定。也许与您的同事或经理讨论在 Azure 上一次应该调用什么文件?
    • 假设这已经回答了您的问题,请不要忘记接受它。 @GOPAL
    • await blob.UploadAsync(uploadData, header); - 此方法不支持BinaryDataBlobHttpHeaders 两个参数。我认为您应该使用new BlobUploadOptions { HttpHeaders = header } 而不是header。 (Azure.Storage.Blobs 12.14.0)
    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 2019-03-04
    • 2022-01-20
    • 2017-01-06
    • 2015-04-23
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多