使用HttpClient发送MultipartFormDataContent时设置ContentType标头

use*_*261 6 asp.net-mvc asp.net-web-api

我正在使用HttpClient使用下面的代码将文件上传到WebAPI资源.由于我使用的是MultipartFormDataContent,因此请求消息内容类型设置为multipart/form-data.在WebAPI中,我检查内容标题只允许文本/普通媒体类型.那么,如果我使用带有MultipartFormDataContent的HttpClient,我在哪里设置文件类型的内容头.

try
{
    var content = new MultipartFormDataContent();

    string filePath = Server.MapPath("~/Content/" + "demo.txt");

    var filestream = new FileStream(filePath, FileMode.Open);

    var fileName = System.IO.Path.GetFileName(filePath);

    content.Add(new StreamContent(filestream), "file", fileName);

    var requestMessage = new HttpRequestMessage()
    {
            Method = HttpMethod.Post,
            Content = content,
            RequestUri = new Uri("http://localhost:64289/api/uploads/"), 
        };

    var client = new HttpClient();

    client.DefaultRequestHeaders.Add("Accept", "application/json");

    HttpResponseMessage response = await client.SendAsync(requestMessage);

    if (response.IsSuccessStatusCode)
    {
                    /// 
    }
}
catch (Exception e)
{
                throw;
}
Run Code Online (Sandbox Code Playgroud)

Gir*_*ain 15

您可以使用StreamContent对象的Headers属性设置ContentType属性,例如,在我的情况下,我上传图像并使用以下代码:

        StreamContent image = new StreamContent(fileStream);
        image.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping(imagePath));
Run Code Online (Sandbox Code Playgroud)