Fra*_*hop 5 c# rest file-transfer asp.net-web-api asp.net-core-2.0
我有一个C# .NET Core Web API ( REST )。我想实现一个用于上传文件的端点和一个用于下载文件的端点(任何文件类型,如二进制)。设计和代码的最佳实践是什么?到目前为止,我通过搜索引擎找到的内容还算一周。 你有推荐给我吗? 我想我必须将标题(类型,..?)之类的元数据保存在其他地方。可以使搜索文件变得更容易。
在来自微软的链接中,我遇到了问题,它似乎仅适用于我不使用的 MVC API。
后
[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)
Run Code Online (Sandbox Code Playgroud)
files是空的。
而这个来自c-sharpcorner 的效果并没有更整洁。我的 Type 目标文件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();
}
}
Run Code Online (Sandbox Code Playgroud)