Skip to main content
 首页 » 编程设计

C# .NET Web API 文件上传和下载的最佳实践是什么

2024年02月04日26xiaohuochai

我有一个 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(); 
    } 
}