'C# REST API File Upload from Client Code gets 400 Bad Request
I have a Rest API written in .Net core that accepts a File as input as Multipart/Form-data. The API works absolutely fine when I run it from Swagger/Postman.
Here is the API endpoint.
  [HttpPost("CreateStudy")]
  public ActionResult CreateStudy([FromForm] APIRequest request)
  {
     // rest of the code
Also here is the APIRequest object. it has only one property which is IFormFile Type.
public class APIRequest
{             
    public IFormFile XMLFile { get; set; }
}  
So far it works well. The problem is that I am trying to write a client side code that will call this API and pass the File from C# code.
But I am always getting a 400-Bad request in the client code.
This is the client code I am trying with.
    public string CallServiceWithFileAsync(string EndPointURL, string FilePath)
    {
            string ResultStatusCode;            
        
            Uri uri = new Uri(EndPointURL);
            var Client = new HttpClient();
            Client.DefaultRequestHeaders.Clear();
            //Prepare Message
            HttpRequestMessage Message = new HttpRequestMessage();
            Message.Method = HttpMethod.Post;
            Message.Headers.Add("Accept", "application/octet-stream");
            Message.RequestUri = new Uri(EndPointURL);               
            using (Stream fileStream = File.OpenRead(FilePath))
            {
                var content = new StreamContent(fileStream);
                var response = Client.PostAsync(uri, content);
                ResultStatusCode = response.Result.StatusCode.ToString();
            }
            return ResultStatusCode;
    }
What am I doing wrong here? What is the correct way of sending a file into REST endpoint ?
Solution 1:[1]
[FromForm] expects an accept header with application/x-www-url-formencoded. If this is not the case, check your output-logs to see why the request is not processed.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | klekmek | 
