gpt4 book ai didi

c# - 如何以编程方式将 .NET 5 中的文件上传到 .NET 5 Rest API 而不会丢失内容?

转载 作者:行者123 更新时间:2023-12-05 02:01:51 25 4
gpt4 key购买 nike

我创建了一个 .NET 5 REST Api。我可以轻松地从 swagger 上传文件。那工作正常。调试的时候发现字节数组不为空。这是 Controller 方法:

[Route("api/[controller]")]
[ApiController]
public class ImageController : ControllerBase
{

// POST api/<ImageController>
[HttpPost]
public void Post([FromForm] UserModel info)
{
var memoryStream = new MemoryStream();
info.Avatar.CopyTo(memoryStream);
var bytes = memoryStream.ToArray();
}
}

这是用户模型:

public class UserModel
{
[FromForm(Name = "avatar")]
public IFormFile Avatar { get; set; }

[FromForm(Name = "name")]
public string Name { get; set; }
}

我还尝试以编程方式上传文件。这并不完全有效。在 Controller 方法中放置断点时,我看到字节数组为空。所以调用本身是有效的,但数据没有进入。

这是用于上传文件的 .NET 5 控制台应用程序的源代码。

正如所解释的,这会做一些有用的事情,因为它实际上调用了 REST API,我可以通过在 Controller 方法中放置断点来看到它。但是,我的 Controller 方法没有获取任何数据。字节数组为空。

    private static async Task TryUpload()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:5000");
string filePath = "C:\\Users\\daan1982\\Pictures\\RiderStart.png";
var fileStream = File.Create(filePath);
using (var content =
new MultipartFormDataContent("Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture)))
{
content.Add(new StreamContent(fileStream), "avatar", "RiderStart.png");

var result = await client.PostAsync("/api/Image", content);
var request = result.RequestMessage;
}
}
}

static async Task Main(string[] args)
{
await TryUpload();
Console.WriteLine("Hello World!");
}

因为我在上传和请求模型中将内容命名为“avatar”,这应该可以正常工作。但是,它确实有效但效果不佳,因为字节数组始终为空。

我做错了什么?我该如何解决这个问题?

最佳答案

关于c# - 如何以编程方式将 .NET 5 中的文件上传到 .NET 5 Rest API 而不会丢失内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66225379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com