You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C# HttpClient调用DoodStream API上传视频遇Multipart格式错误

解决ASP.NET Core HttpClient调用DoodStream API上传视频报“Malformed multipart POST”的问题

核心排查方向

出现该错误的本质是HttpClient构造的multipart请求格式不符合DoodStream API的校验要求,结合Postman等工具的成功请求,重点检查以下几点:

1. 确保上传URL的正确性

先确认你是通过DoodStream的/api/upload/server接口获取到的临时上传地址,而非直接调用固定域名地址。这个临时地址是动态生成的,直接使用固定地址会触发请求格式校验失败。

2. 修正MultipartFormDataContent的构造逻辑

错误通常出在文件字段定义、边界符处理或请求头设置上,以下是经过验证的正确构造代码:

public async Task<string> UploadDSAsync(string uploadUrl, byte[] videoBytes, string fileName)
{
    using var httpClient = new HttpClient();
    using var multipartContent = new MultipartFormDataContent();

    // 构造文件内容,指定匹配视频类型的媒体格式
    using var fileContent = new ByteArrayContent(videoBytes);
    fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("video/mp4"); // 根据实际视频格式调整

    // 关键:字段名必须为"file",文件名避免特殊字符
    multipartContent.Add(fileContent, "file", fileName);

    // 若API要求额外参数(如folder_id),按如下方式添加
    // multipartContent.Add(new StringContent("your-folder-id"), "folder_id");

    // 无需手动设置Content-Type,MultipartFormDataContent会自动生成带合法边界符的请求头
    var response = await httpClient.PostAsync(uploadUrl, multipartContent);

    response.EnsureSuccessStatusCode();
    return await response.Content.ReadAsStringAsync();
}

3. 规避常见错误点

  • 不要手动指定边界符:HttpClient自动生成的边界符符合RFC标准,手动设置易出现格式错误(如包含空格或非法字符)。
  • 不要自定义Content-Type请求头:MultipartFormDataContent会自动添加Content-Type: multipart/form-data; boundary=xxx,手动覆盖会导致边界符不匹配。
  • 检查文件名编码:避免文件名包含非ASCII字符,必要时对文件名进行UrlEncode处理。

4. 对比请求报文定位差异

用Fiddler或ASP.NET Core日志工具捕获HttpClient发送的请求报文,与Postman的成功报文对比,重点关注:

  • 边界符的格式和位置
  • Content-Disposition字段的引号、参数是否完全一致
  • 换行符是否为CRLF(部分API对此有严格要求)

例如Postman的成功请求中,文件字段的格式为:

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="test.mp4"
Content-Type: video/mp4

[视频字节数据]
------WebKitFormBoundary7MA4YWxkTrZu0gW--

确保你的HttpClient请求格式与上述完全匹配。

内容的提问来源于stack exchange,提问作者Mert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:36:16