在API请求.NET中发送文件



我有一个通过Postman表单数据发送请求的enpoint。请求有2个密钥。

message : string
file: File

这还可以。所以,我想用C#代码发送同样的请求。在c#中,我只需要从本地选择文件,以某种方式将其转换为正确的格式,并将其分配给请求模型中的file属性,我的意思是我不能改变发送请求的逻辑。我不能向HttpRequest或MultipartFormDataContent等写入额外的逻辑(我甚至看不到它是如何发送的(。只需将Model添加到此请求正文中即可。我有型号RequestModel

public class RequestModel
{
[JsonProperty("message")]
public string Message {get; set; }
[JsonProperty("file")]
public whateverType File {get; set; }
}

消息部分工作,所以我需要将本地文件分配给file属性。我怎么能那样做。我几乎什么都试过了,但都不起作用。谢谢

您不需要将文件保存在模型中。

这是一个只需知道文件名即可发布模型的示例。

var model = new RequestModel();
// ... fill the model with some data
model.Message = "test";
model.File = @"c:test.jpg";
using var httpClient = new HttpClient();
{
var form = new MultipartFormDataContent();
form.Add(new StringContent(model.Message), nameof(RequestModel.Message));
var bytes = File.ReadAllBytes(model.File);
form.Add(new ByteArrayContent(bytes, 0, bytes.Length), "profile_pic", "hello1.jpg");
var response = await httpClient.PostAsync("PostUrl", form);
response.EnsureSuccessStatusCode();
var sd = response.Content.ReadAsStringAsync().Result; // you should use await if your method is async ...
}
public class RequestModel
{
public string Message { get; set; }
public string File { get; set; } // simply use file-path
}

最新更新