MultipartFormDataContent 未在 HttpRequestBody 中添加 Content-Type

MultipartFormDataContent not adding Content-Type in HttpRequestBody

我有一个简单的 HttpClient,它对端点执行 multipart/form-data post。

using (var httpClient = new HttpClient())
        {
            using (var request = new HttpRequestMessage(new HttpMethod("POST"), url))
            {
                MultipartFormDataContent mfdc = new MultipartFormDataContent();
                mfdc.Add(new StreamContent(content: new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"))),
                        name: "file",
                        fileName: "File1.txt");

                var response = await httpClient.PostAsync(url, mfdc);
            }
        }

此代码生成此请求:

Content-Type: multipart/form-data; boundary="0d411b9f-a36b-4326-97b6-85c781d348d2"
Content-Length: 196
Host: somehost.net

--0d411b9f-a36b-4326-97b6-85c781d348d2
Content-Disposition: form-data; name=file; filename=File1.txt; filename*=utf-8''File1.txt

This is from a file
--0d411b9f-a36b-4326-97b6-85c781d348d2--

我 运行 遇到的问题是我正在调用的 API 也需要请求正文中的 Content-Type。

正确的请求应该是这样的:

Content-Type: multipart/form-data; boundary="0d411b9f-a36b-4326-97b6-85c781d348d2"
Content-Length: 196
Host: somehost.net

--0d411b9f-a36b-4326-97b6-85c781d348d2
Content-Disposition: form-data; name=file; filename=File1.txt; filename*=utf-8''File1.txt
Content-Type: text/plain

This is from a file
--0d411b9f-a36b-4326-97b6-85c781d348d2--

您还没有添加要发送的内容的内容类型。所以不会包含在请求中

using (var httpClient = new HttpClient()) {
    MultipartFormDataContent form = new MultipartFormDataContent();

    var stream = new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"));
    var fileContent = new StreamContent(content: stream);
    //setting content type
    fileContent.Headers.ContentType = new MediaTypeHeaderValue("text/plain");

    form.Add(fileContent, name: "file", fileName: "File1.txt");

    var response = await httpClient.PostAsync(url, form);
}