post multipart/form-data in c# HttpClient 4.5

╄→尐↘猪︶ㄣ 提交于 2019-11-30 20:07:46

This method works for me. You can use form data and file

public async Task<bool> Upload(FileUploadRequest model)
{
    var httpClientHandler = new HttpClientHandler()
    {
      Proxy = new WebProxy("proxyAddress", "proxyPort")
      {
        Credentials = CredentialCache.DefaultCredentials
      },
      PreAuthenticate = true,
      UseDefaultCredentials = true
    };


    var fileContent = new StreamContent(model.File.OpenReadStream())
    {
       Headers =
       {
           ContentLength = model.File.Length,
           ContentType = new MediaTypeHeaderValue(model.File.ContentType)
       }
    };

    var formDataContent = new MultipartFormDataContent();
    formDataContent.Add(fileContent, "File", model.File.FileName);          // file
    formDataContent.Add(new StringContent("Test Full Name"), "FullName");   // form input

    using (var client = new HttpClient(handler: httpClientHandler, disposeHandler: true))
    {
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tokenString);

        using (var res = await client.PostAsync("http://filestorageurl", formDataContent))
        {
           return res.IsSuccessStatusCode;
        }
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!