file-upload - 如何上传文件以从 swagger 流式传输?

标签 file-upload swagger swagger-ui swashbuckle

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

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

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

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

谢谢, 德里克

最佳答案

我不知道有任何能力可以直接在请求参数上使用 Stream 类型,但是 IFormFile 接口(interface)规定了使用流的能力.所以我会在您的请求参数中保留 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
}

关于file-upload - 如何上传文件以从 swagger 流式传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47274920/

相关文章:

java - 如果使用 WebMvcConfigurationSupport 添加转换器,Swagger OpenAPI 3 不会在 springboot 2 上显示

spring-boot - 使用Springfox-Swagger2在Swagger UI中自定义请求 header 描述

flutter 网络 : How to Upload a Large File?

node.js - 如何使用 Angular 2+、Express 和 nodeJs 上传文件

java - 文件未上传到服务器

ssl - 使用自签名证书在 Chrome 上失败的客户端身份验证

go - 如何将 swagger ui 与 golang 和 goa 集成

上传图像文件的javascript/jquery大小和尺寸

Swagger 最佳实践

java - 使用 Spring Boot 配置 Swagger2