如何使用最小WEB API实现文件上传
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍"如何使用最小WEB API实现文件上传"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用最小WEB API实现文件上传"文章能帮助大家解
千家信息网最后更新 2025年02月01日如何使用最小WEB API实现文件上传
这篇文章主要介绍"如何使用最小WEB API实现文件上传"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用最小WEB API实现文件上传"文章能帮助大家解决问题。
前言:
我们使用最小 WEB API 实现文件上传功能,虽然客户端访问是正常的,但是当打开 Swagger 页面时,发现是这样的:
没法使用 Swagger
页面测试。
一、允许 Content Type
正常的 Swagger 页面应该是这样的:
看来,我们需要指定 Content Type:
app.MapPost("/upload", async (HttpRequest request) => { var form = await request.ReadFormAsync(); return Results.Ok(form.Files.First().FileName); }).Accepts("multipart/form-data");
结果,Swagger 页面变成了这样,增加了一堆 Form 相关属性,唯独没有 file :
看来,只有自定义 Swagger 页面了。
二、自定义 OperationFilter
在 OpenAPI 3.0 中,文件上传的请求可以用下列结构描述:
而在 Swashbuckle
中,可以使用 IOperationFilter
接口实现操作筛选器,控制如何定义 Swagger UI
的行为。
在这里,我们将利用 RequestBody
对象来实现上述的文件上传的请求结构。
public class FileUploadOperationFilter : IOperationFilter{ public void Apply(OpenApiOperation operation, OperationFilterContext context) { const string FileUploadContentType = "multipart/form-data"; if (operation.RequestBody == null || !operation.RequestBody.Content.Any(x => x.Key.Equals(FileUploadContentType, StringComparison.InvariantCultureIgnoreCase))) { return; } if (context.ApiDescription.ParameterDescriptions[0].Type == typeof(HttpRequest)) { operation.RequestBody = new OpenApiRequestBody { Description = "My IO", Content = new Dictionary{ { FileUploadContentType, new OpenApiMediaType { Schema = new OpenApiSchema { Type = "object", Required = new HashSet { "file" }, Properties = new Dictionary { { "file", new OpenApiSchema() { Type = "string", Format = "binary" } } } } } } } }; } }}
然后,在启动代码中配置,应用此操作筛选器:
builder.Services.AddSwaggerGen(setup =>{ setup.OperationFilter();});
这将呈现如下 Swagger 页面:
关于"如何使用最小WEB API实现文件上传"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
文件
页面
最小
知识
结构
行业
筛选器
不同
实用
代码
内容
前言
功能
只有
实用性
实际
客户
客户端
对象
属性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑞淘网络技术有限公司
178数据库技术学院
网络安全机遇与挑战并存
宝塔java数据库
企业微信登录邮箱服务器配置
和平精英可以刷新服务器吗
以琳互联网科技骗子
服务器架构相对于板卡架构的优势
网络安全管理和维护工作总结
技术派数据库方案
牢固树立广电网络安全观
电信系统软件开发工程师
tbf网络安全大赛
表格数据库管理系统
员工考勤系统数据库
软件开发有什么专业证可以考
智慧消防网络安全工程师
智能软件开发都有哪些
用DBeaver建立数据库
专科学网络技术
黄浦区互联网软件开发销售方法
网络安全课程评价及建议
数据库持久化策略
对网络安全非传统安全的认识
ps5育碧服务器目前不可用
软件开发自评报告模板
网络安全小学生视频
分布式数据库解决哪些问题
360网络安全总部
东软软件开发笔试答案