如何从swagger上传文件到流?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从swagger上传文件到流?相关的知识,希望对你有一定的参考价值。

我想知道如何生成swagger UI以将文件作为流上传到ASP.net Core控制器。

这是一个描述上传小文件与大文件之间差异的链接。

以下是描述如何实现小文件上载的链接,但没有详细说明如何实现流。

https://www.janaks.com.np/upload-file-swagger-ui-asp-net-core-web-api/

谢谢,德里克

答案

我不知道有任何能力直接在请求参数上使用Stream类型,但IFormFile接口规定了使用流的能力。所以我会在你的请求参数中保留IFormFile类型,然后:

  • 将其完整复制到内存流OR
  • 打开流以供阅读

在我的情况下,我想完全基础64字节(我的文件只有几百kbs)所以我使用这样的东西:

string fileBase64 = null;
using (var memStream = new MemoryStream())
{
    model.FormFile.CopyTo(memStream);
    fileBase64 = Convert.ToBase64String(memStream.ToArray());
}

在你的情况下,MemoryStream可能不合适;正如您所提到的那样,您不希望将整个文件保留在内存中。

所以我建议打开阅读流,例如:

using (var fileStream = model.FormFile.OpenReadStream())
{
    // Do yo' thang
}

以上是关于如何从swagger上传文件到流?的主要内容,如果未能解决你的问题,请参考以下文章

从水晶报表导出到流功能打开文件

.Net Core小技巧 - 使用Swagger上传文件

如何从 python 中的嵌套 YAML 文件中读取数据?

如何将当前使用的光标保存到流(资源或文件)中?

如何通过 HttpWebRequest 上传文件?

如何在 Swagger (OpenAPI) 中发布文件?