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

标签 c# rest asp.net-web-api asp.net-core-2.0 file-transfer

我有一个 C# .NET Core Web API (REST)。 我想实现一个上传文件端点和一个下载文件端点(任何文件类型,二进制文件)。 设计和代码的最佳做法是什么?到目前为止,我通过搜索引擎找到的是一周。 你对我有什么建议吗? 我想我必须将标题(类型,..?)之类的元数据保存在其他地方。可以更轻松地搜索文件。

此链接来自 microsoft我明白了,它似乎只适用于 MVC API,我不使用它。

之后

[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)

files 是空的。

这来自 c-sharpcorner不能更整洁地工作。我的类型 IFormFile 的目标文件不知道方法。GetFilename()

enter image description here

最佳答案

如果您看一下 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/

相关文章:

c# - 寻找 `protected override void Dispose(bool disposing)` 的 Stylecop 完美评论

c# - c#中的文件夹储物柜

json - 在 HTTP 响应中处理接口(interface)的最佳方式

java - 网址解码器 : Illegal hex characters in escape (%) pattern for multipart data

java - 在客户端进行身份验证,现在如何保护我的 Java Rest API?

c# - 从 WebAPI IQueryable 中排除列

c# - Null 检查 Stream.Null

c# - .net 应用程序的 oracle 连接超时

c# - ASP.NET Web API - 驼峰式 XML

c# - 使用 MVC Web API 发布对象数组