如何修改RestSharp代码生成符合规范的multipart/form-data文件上传请求
问题根因
你当前的代码错误地将参数类型指定为ParameterType.RequestBody,导致RestSharp会把所有请求体参数拼接为application/x-www-form-urlencoded格式的键值对字符串(也就是你看到的格式2),而不会生成标准的multipart分段结构。同时手动指定Content-Type和boundary也属于多余操作,反而可能干扰RestSharp的请求构造逻辑。
修正后代码(适配RestSharp 107+ 主流版本)
var client = new RestClient("https://www.myapiurl.com/api/v1/add"); var restRequest = new RestRequest(Method.POST); // 关键配置:强制使用multipart/form-data格式,自动生成boundary restRequest.AlwaysMultipartFormData = true; // 直接添加普通文本参数即可,不需要额外指定参数类型 restRequest.AddParameter("id", "7926456167"); restRequest.AddParameter("filename", "test2.txt"); restRequest.AddParameter("description", ""); restRequest.AddParameter("attachment", "dGhpcyBpcyBhIHRlc3Q="); // 执行请求 var response = await client.ExecutePostAsync(restRequest);
关键修改说明
- 移除了手动设置的
Content-Type请求头,RestSharp生成multipart请求时会自动填充正确的Content-Type和随机boundary值 - 添加
restRequest.AlwaysMultipartFormData = true配置,强制RestSharp将请求体格式化为标准的multipart/form-data分段结构,和你要求的格式1完全一致 - 不需要为普通参数指定
multipart/form-data和ParameterType.RequestBody参数类型,默认的参数类型在开启AlwaysMultipartFormData后会自动转为form-data的分段项
修改完成后大文件base64参数也可以正常提交,不会出现格式2的长度超限问题。
内容的提问来源于stack exchange,提问作者John Livermore
相关产品推荐
相关产品推荐

