我正在处理一个第三方API,该API要求二进制文件上传请求格式不包含 Content-Type
头部值为 multipart/form-data
,并包含以下头部信息:
Content-Type: application/octet-stream
Content-Disposition: filename*=UTF-8''file.zip
HttpRequestMessage
和HttpContent.Headers.ContentDisposition.DispositionType
都无法帮助我达成目标,因为我不能按照预期设置值,或者它们会自动设置。
我知道这个API可能没有遵循HTTP标准,但这不是我的API,我对此没有影响力。
我的尝试却失败了
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.ExpectContinue = false;
FileStream fs = new FileStream(@"e:\dev\TestHalfB.docx", FileMode.Open);
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, <Uri>);
HttpContent fc = new StreamContent(fs);
var mpContent = new MultipartFormDataContent();
mpContent.Add(fc);
fc.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
req.Content = fc;
fc.Headers.ContentDisposition.DispositionType = "filename*=UTF-8''TestHalfB.docx";
using (var response = await client.SendAsync(req))
{
response.EnsureSuccessStatusCode();
var resp = await response.Content.ReadAsStringAsync();
}
fs.Close();
}
有人知道我可以使用哪个较低级别的API或有什么建议吗?
所以关键是如何将Content-Disposition
头设置为我想要的值。
Content-Disposition
еӨҙйғЁжҳҫзӨәдәҶд»Җд№Ҳпјҹ - undefinedByteArrayContent
更好,但是你实际上收到了什么错误? - undefinedfc.Headers.ContentDisposition.DispositionType = "filename*=UTF-8''TestHalfB.docx"
。会给出无效值错误提示。 - undefined