使用最小 WEB API 实现文件上传的Swagger支持

使用最小 WEB API 实现文件上传的 Swagger 支持,需要完成以下步骤:

  1. 添加 Swagger 支持

Startup.cs 文件的 ConfigureServices 方法中,添加 Swagger 支持的代码:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
});

Configure 方法中,启用 Swagger:

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1");
});
  1. 添加文件上传方法

添加文件上传方法的代码如下:

[HttpPost]
[Route("UploadFile")]
[Consumes("multipart/form-data")]
public async Task<IActionResult> UploadFile(IFormFile file)
{
    if (file != null && file.Length > 0)
    {
        var fileName = file.FileName;
        var filePath = Path.Combine(@"C:\Files\", fileName);
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
        return Ok(new { message = "File uploaded successfully!", fileUrl = filePath });
    }
    return BadRequest();
}
  1. 添加 Swagger 上传方法

ConfigureServices 方法中,添加上传文件的 Swagger 说明:

c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });

c.OperationFilter<AddFileParamTypesOperationFilter>();
c.OperationFilter<AddFileParamNameOperationFilter>();

SwaggerConfig.cs 文件中,添加 Swagger 上传文件的 Filters:

public class AddFileParamTypesOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, OperationFilterContext context)
    {
        if (operation.Parameters != null)
        {
            foreach (var parameter in operation.Parameters)
            {
                var parameterType = parameter.GetType();

                if (parameterType == typeof(NonBodyParameter) &&
                    parameter.In.Equals("formData", StringComparison.OrdinalIgnoreCase) &&
                    parameter.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
                {
                    parameter.Type = "file";
                    parameter.Format = null;
                    parameter.In = "formData";
                }
            }
        }
    }
}

public class AddFileParamNameOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, OperationFilterContext context)
    {
        if (operation.Parameters != null)
        {
            foreach (var parameter in operation.Parameters)
            {
                var parameterType = parameter.GetType();

                if (parameterType == typeof(NonBodyParameter) &&
                    parameter.In.Equals("formData", StringComparison.OrdinalIgnoreCase) &&
                    parameter.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
                {
                    parameter.Name = "file";
                }
            }
        }
    }
}

示例1:

使用 POSTMAN 进行上传文件操作,

请求地址:https://localhost:5001/UploadFile
请求方式:POST
文件参数名:file
方法说明:上传指定文件到本地的 C:\Files 文件夹中,上传成功后返回 “File uploaded successfully!” 和文件路径。

示例2:

通过 Swagger 进行上传文件操作,

进入地址 https://localhost:5001/swagger/index.html
点击 API -> POST /UploadFile -> Try it out按钮
Choose Files下拉框中选择需要上传的文件
点击 Execute 按钮
上传成功后,点击 Response body 中的 Model 按钮,查看路径信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用最小 WEB API 实现文件上传的Swagger支持 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • Python包,__init__.py功能与用法分析

    关于Python包,init.py功能与用法分析,我会采用以下的格式来进行详细讲解: 一、Python包的概念 Python包是Python模块的集合体,通常是一个目录,包含一些Python模块以及一个可选的__init__.py文件,用于定义包级别的Python代码。Python包的作用是为了以一种层次化的结构组织Python模块,实现代码的重用和模块化。…

    云计算 2023年5月18日
    00
  • WebApi2 文件图片上传与下载功能

    下面我将为您详细讲解“WebApi2 文件图片上传与下载功能”的完整攻略。 一、上传功能 1. 客户端请求上传 首先,客户端需要向服务器发起上传文件/图片的请求。可以通过一个简单的HTML表单来构建这个请求。在表单里,需要指定上传地址和上传方式,同时通过一个文件选择 input 框来选择要上传的文件。 <form action="http:/…

    云计算 2023年5月17日
    00
  • 【云计算】开源装机自动化系统 CloudBoot OSInstall 介绍

    “CloudBoot”(OSinstall) 发布了。 产品更新及特点如下: 新增虚拟化操作系统适配:支持主流操作系统:RedHat、CentOS、SUSE、Ubuntu、Windows Server 2012、Windows Server2008、VMware Esxi、Openstack等 新增服务器硬件适配:支持主流服务器厂商的硬件, 华为、H3C、D…

    云计算 2023年4月13日
    00
  • Elasticsearch查询及聚合类DSL语句宝典

    随着使用es场景的增多,工作当中避免不了去使用es进行数据的存储,在数据存储到es当中以后就需要使用DSL语句进行数据的查询、聚合等操作,DSL对SE的意义就像SQL对MySQL一样,学会如何编写查询语句决定了后期是否能完全驾驭ES,所以至关重要,本专题主要是分享常用的DSL语句,拿来即用。 作者:京东科技 纪海雨 前言 随着使用es场景的增多,工作当中避免…

    云计算 2023年4月10日
    00
  • 记一次EFCore类型转换错误及解决方案

    下面是关于“记一次EFCore类型转换错误及解决方案”的完整攻略,包含两个示例说明。 简介 在使用EFCore进行数据库操作时,我们有时会遇到类型转换错误。在本攻略中,我们将介绍一次EFCore类型转换错误的解决方案,包括错误原因、解决方案等。 步骤 在解决EFCore类型转换错误时,我们可以通过以下步骤来实现: 确认错误原因。 修改数据类型。 更新数据库。…

    云计算 2023年5月16日
    00
  • 边缘计算与云计算协同白皮书2018

    此文参照边缘计算产业联盟(ecc)和工业互联网产业联盟(all)在18年11月发布的边缘计算和云计算协同白皮书,学习整理而成, 可以大概了解原文的整体想法,留作复习。 01 边云协同方法边缘计算和云计算价值 1.1边缘计算概念 边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的分布式开放平台,就近提供边缘智能服务,满足行业数字化在…

    云计算 2023年4月13日
    00
  • 记一次django内存异常排查及解决方法

    我将为你详细讲解如何排查并解决Django内存异常。 1. 异常现象 首先,在开始排查前,我们需要知道异常的表现。在Django应用程序中,常见的内存异常表现为: 频繁的重启应用程序 页面响应时间过长 应用程序崩溃 如果您遇到了以上异常,那么您的应用程序很可能存在内存异常。 2. 排查方法 排查应用程序中的内存异常需要以下步骤: 2.1 监控系统 监控系统可…

    云计算 2023年5月18日
    00
  • ASP.Net Core MVC基础系列之获取配置信息

    下面是关于“ASP.Net Core MVC基础系列之获取配置信息”的完整攻略,包含两个示例说明。 简介 在ASP.NET Core MVC应用程序中,我们可以使用配置文件来存储应用程序的配置信息。本文将详细讲解如何在ASP.NET Core MVC应用程序中获取配置信息。 获取配置信息 以下是在ASP.NET Core MVC应用程序中获取配置信息的步骤:…

    云计算 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部