【发布时间】:2021-07-31 02:44:49
【问题描述】:
我正在尝试创建 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 容器“图像存储”。
【问题讨论】:
-
应该将您的
MemoryStreamms传递给bobClient.Upload;bobClient.Upload(ms); -
要扩展@pfx 评论,基本上将这行代码
blobClient.Upload(file2);更改为blobClient.Upload(ms)。
标签: c# asp.net azure file-upload azure-functions