我有一个 C# .NET Core Web API (REST)。 我想实现一个上传文件端点和一个下载文件端点(任何文件类型,二进制文件)。 设计和代码的最佳做法是什么?到目前为止,我通过搜索引擎找到的是一周。 你对我有什么建议吗? 我想我必须将标题(类型,..?)之类的元数据保存在其他地方。可以更轻松地搜索文件。
此链接来自 microsoft我明白了,它似乎只适用于 MVC API,我不使用它。
之后
[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)
files 是空的。
这来自 c-sharpcorner不能更整洁地工作。我的类型 IFormFile 的目标文件不知道方法。GetFilename()。
请您参考如下方法:
如果您看一下 IFormFile 文档,您会注意到它有一个属性 FileName,您可以使用它:
https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.iformfile?view=aspnetcore-2.2
因此,举个例子,您可以使用该属性将其保存在任何您想要的位置。在我的例子中,将文件写入存储的所有低级内容都隐藏在存储库中,但你明白了:
public async Task<IActionResult> Upload(IFormFile file)
{
if (file == null || file.Length == 0) return BadRequest();
using (var ms = new MemoryStream())
{
file.CopyTo(ms);
var img = new Entities.Image
{
Name = file.FileName,
ContentType = file.ContentType,
Data = ms.ToArray()
};
await _repo.CreateImage(img);
return Ok();
}
}
