【问题标题】:RestClient send IFormFileRestClient 发送 IFormFile
【发布时间】:2018-03-08 14:09:09
【问题描述】:

我从我的控制器接收一个文件

 public async Task<IActionResult> ScanFile(IFormFile request)

以及如何在 RestSharp 中传递它,如下面的 AddParameter 所示。 我尝试设置自己的边界并序列化 IFormFile 没有任何结果。

var client = new RestClient("https://api_url/requests");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "bearer API_TOKEN");
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"eicar.com\"\r\nContent-Type: text/plain\r\n\r\nX5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\r\n-----011000010111000001101001--", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

【问题讨论】:

  • 如果有帮助,你检查过这篇文章吗? stackoverflow.com/questions/22799392/…
  • 您需要将IFormFile 流读入字节数组。最简单的方法是将其复制到MemoryStream,然后在其上使用ToArray。然后,在您的请求中发送字节数组。

标签: c# asp.net-core multipartform-data restsharp


【解决方案1】:

这对我有用。

在我的控制台应用中,

var client = new RestClient("http://localhost:30000/api/Factory");
var request = new RestRequest("UploadDocumentBlob", Method.POST) { RequestFormat = DataFormat.Json, AlwaysMultipartFormData = true };
request.AddFile("file", Path.Combine(settings.PdfStorePath, "11rwai4q.pdf"));
var uploadDocumentBlobResponse = client.Post<Response>(request).Data;

到我的 api,

[HttpPost("api/[controller]/[action]")]
public async Task<Response> UploadDocumentBlob(IFormFile file)

这里的关键是request.AddFile 中的第一个参数必须是"file",而不是任何其他名称。

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多