C#控制台应用使用HttpClient按指定格式上传文件问题求助
C# 控制台应用formdata格式文件上传实现方案
根据你给出的接口要求,需要使用MultipartFormDataContent构造符合规范的表单请求体,完整实现代码如下:
using System.Net.Http.Headers; // 你已有的初始化代码 HttpClientHandler _manipulador = new HttpClientHandler(); HttpClient _cliente = new HttpClient(_manipulador); string tokenAplicacao_ = "实际业务Token值"; _cliente.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", tokenAplicacao_); // ------------------- 请求体构造代码 ------------------- string uploadUrl = "实际上传接口地址"; string filePath = @"C:\test\target_file.xlsx"; // 替换为本地文件的实际路径 using var formContent = new MultipartFormDataContent(); // 读取文件流添加到表单,表单key对应要求的"arquivos" using var fileStream = File.OpenRead(filePath); var streamContent = new StreamContent(fileStream); // 可根据文件实际类型调整Content-Type,通用二进制类型为application/octet-stream streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream"); formContent.Add(streamContent, "arquivos", Path.GetFileName(filePath)); // 发送POST请求 var response = await _cliente.PostAsync(uploadUrl, formContent); // 响应结果处理 if (response.IsSuccessStatusCode) { string result = await response.Content.ReadAsStringAsync(); Console.WriteLine($"上传成功,返回内容:{result}"); } else { Console.WriteLine($"上传失败,状态码:{response.StatusCode},错误信息:{await response.Content.ReadAsStringAsync()}"); }
提示:如果使用低版本C#,需要将Main方法声明为
static async Task Main(string[] args)才能使用await语法
常见问题排查点
- 确认程序运行身份对目标文件有读取权限,文件路径不存在特殊字符或空格
- 若接口要求指定文件的MIME类型,替换
application/octet-stream为对应类型即可 - 多文件上传场景下,重复构造
StreamContent添加到formContent即可
内容的提问来源于stack exchange,提问作者Ronye Peterson
相关产品推荐
相关产品推荐

