首页 > 解决方案 > 错误:无法从 Microsoft.AspNetCore.Http.IFormFile 转换为 System.IO.Stream

问题描述

我正在尝试创建 Azure 函数,该函数从 html 表单 POST 请求中获取图像文件并将其保存到 Blob 存储中,以便进一步与另一个函数一起使用。这是我的代码:

public static class Function2
    {
        [FunctionName("Function2")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            foreach (var file in req.Form.Files)
            {
                using (var ms = new MemoryStream())
                {
                    var file2 = req.Form.Files[0];
                    await file2.CopyToAsync(ms);
                    ms.Seek(0, SeekOrigin.Begin);
                    var connectionString = "DefaultEndpointsProtocol=https;" +
                "AccountName=mystorageaccount;" +
                "AccountKey=8Hk5k6j65j5j665j67k==;" +
                "EndpointSuffix=core.windows.net";

                    // intialize BobClient 
                    Azure.Storage.Blobs.BlobClient blobClient = new Azure.Storage.Blobs.BlobClient(
                        connectionString: connectionString,
                        blobContainerName: "image-storage",
                        blobName: "images");

                    // upload the file
                    blobClient.Upload(file2);
                }
            }

            return new OkResult("Image uploaded successfully");
        }
    }

但是,这会引发异常:

错误 CS1503 参数 1:无法从“Microsoft.AspNetCore.Http.IFormFile”转换为“System.IO.Stream”

任何建议将不胜感激。

编辑:我之前使用 Azure 门户为我的存储帐户创建了 Blob 容器“图像存储”。

标签: c#asp.netazurefile-uploadazure-functions

解决方案


BlobCients Upload方法需要 aStream而不是IFormFile.

传递MemoryStream你在ms变量中的值将解决问题。

blobClient.Upload(ms);

推荐阅读