如何从swagger上传文件到流?

时间:2017-11-13 22:54:57

标签: file-upload swagger swagger-ui swashbuckle

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

以下链接描述了上传小文件与大文件之间的区别。

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

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

谢谢, 德里克

1 个答案:

答案 0 :(得分:1)

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

  • 将其完整复制到内存流
  • 打开要读取的信息流

在我的情况下,我想要完整的基本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
}