我有一个 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();
}
}
关于C# .NET Web API 文件上传和下载的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55861633/