作者:秋凉凉_e1998 | 来源:互联网 | 2024-12-04 18:57
利用C#中的多种HTTP客户端上传文件至Web API
C#客户端上传文件至Web API实例汇总
图片来源:尼特什·辛格尔
在之前的教程“使用Swagger在ASP.NET Core中测试文件上传”中,我介绍了如何利用Swagger UI进行文件上传。然而,在许多实际场景中,我们需要将文件上传到特定的API端点,这时就需要自行构建HTTP请求,并通过C#代码实现文件上传。鉴于许多开发者对此有疑问,本文将通过具体示例详细介绍这一过程。
我们将探讨如何使用几种不同的HTTP客户端来完成文件上传任务。
首先,我们从搭建Web API开始。本示例基于.NET 6。
API仅需一个文件
我们先创建一个简单的API端点,该端点仅接收单个文件。
[HttpPost("UploadSingleFile")]
public IActionResult UploadSingleFile(IFormFile file)
{
_logger.LogInformation("接收到文件: " + file.FileName);
return Ok(file.FileName);
}
使用HttpClient上传文件
使用RestSharp上传文件
RestSharp是一个广受好评的.NET HTTP客户端库,支持自动序列化与反序列化、请求及响应类型检测、多样的认证方式等高级功能。
使用Refit上传文件
Refit是另一个专为.NET Core、Xamarin和.NET设计的HTTP客户端库,以其类型安全的接口著称。
API接收包含文件的模型
假设我们有一个类,该类除了文件外还包含其他属性:
public class FileDetail
{
public string Name { get; set; }
public string Description { get; set; }
public IFormFile File { get; set; }
}
相应的API端点如下,它期待接收上述模型作为输入:
[HttpPost("UploadFileWithDetails")]
public IActionResult UploadFileWithDetails([FromForm] FileDetail detail)
{
_logger.LogInformation("文件上传详情: " + detail.File.FileName);
return Ok(detail.File.FileName);
}
接下来,我们将展示如何使用这些客户端库发送包含文件的数据。
使用HttpClient上传包含文件的模型
使用RestSharp上传包含文件的模型
使用Refit上传包含文件的模型
总结
本文收集并展示了使用C#中的不同HTTP客户端向Web API上传文件的方法。希望这些示例能对您的开发工作有所帮助。
编码愉快,不断进步!
版权声明:本文为原创内容,遵循CC 4.0 BY-SA版权协议,转载时请注明出处并保留本声明。
原文链接:https://www.qanswer.top/22228/15350709