通过HttpClient调用微信上传文件接口时会报找不到文件,如视频号小店的img/upload就会报图片为空,同样的代码传给自己后台能正常收到文件。
原因:
HttpClient生成的Header如下
Content-Type: multipart/form-data; boundary="--------------------------707754171968287661800070"
微信后台只能解析如下形式的Header
Content-Type: multipart/form-data; boundary=--------------------------707754171968287661800070
解决办法:
string boundary = "----" + DateTimeOffset.Now.Ticks.ToString("x");
var content = new MultipartFormDataContent(boundary);
content.Add(new ByteArrayContent(fileBytes), "\"media\"", "\"" + newFileName + "\"");
content.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data; boundary=" + boundary);
说明:
1.必须手动指定ContentType
2.name和filename必须带上双引号,如本身name是media,那么传参必须是"media"