问题描述
我正在尝试为应用程序 (ASP.NET Core 3.1/C#) 创建日志文件上传 API。基本上,文件应该能够按需上传到 URL,并将其保存到 Azure BLOB 存储以供日后查看。
从 Postman 进行测试时,我得到了好坏参半的结果。如果我将 Content-Type 标头保持原样,我会收到“415 Unsupported Media Type”错误:
如果我取消选中 Content-Type 标头,我成功访问了 API,但日志文件始终为 NULL。在阅读了大量具有类似问题的帖子后,我尝试过使用和不使用 [FromForm]、[Consumes] 以及许多其他此类小更改,但无法弄清楚。
我假设我做错或遗漏了一些简单的事情,但我没有想法!
下面是我的 API 端点的代码
[HttpPost]
[Consumes("multipart/form-data")]
[Route("/api/beam/v1/{orgCode}/device/{deviceCode}/log")]
[Authorize]
public async Task<IActionResult> PostLogAsync(string orgCode,string deviceCode,[FromForm(Name = "log")] IFormFile log)
{
string lvBlobFileName;
string lvContainerName;
string strContent = Request.ContentType;
lvContainerName = _configuration["StorageContainerLogs"];
BlobContainerClient container = GetCloudBlobContainer(lvContainerName);
lvBlobFileName = $"{orgCode}/{deviceCode}/{deviceCode}_{DateTime.Now.ToString("yyyyMMddhhmmss")}";
BlobClient blob = container.GetBlobClient(lvBlobFileName);
if (log == null)
return Ok("No files to upload");
using (Stream reader = log.OpenReadStream())
{
await blob.UploadAsync(reader);
}
return Ok();
}
感谢任何帮助!