【问题标题】:How to upload file to stream from swagger?如何从 swagger 上传文件到流?
【发布时间】:2018-02-28 18:04:20
【问题描述】:

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

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

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

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

谢谢, 德里克

【问题讨论】:

    标签: file-upload swagger swagger-ui swashbuckle


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-20
      • 2016-12-26
      • 2011-03-05
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      相关资源
      最近更新 更多