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

使用RestRequest发送xlsx文件至HTTP请求体后文件损坏问题求助

问题原因及解决方案
  • 核心问题:你把二进制的Excel文件通过ReadAsStringAsync()转换为字符串后再发送,这会破坏二进制数据的完整性,导致接收方收到损坏的文件。字符串编码无法正确还原二进制文件的所有字节。
  • 正确的实现方式应该直接发送二进制流,避免字符串转换,同时规范异步方法的使用。

修正后的代码

public async Task<string> PostPostman()
{
    try
    {
        string filePath = @"D:\example2.xlsx";
        var client = new RestClient("https://api.xxx.com/v1/FileUpload");
        var request = new RestRequest(Method.Post);
        
        // 添加认证头
        request.AddHeader("Authorization", "Bearer xxxxxxxxxxxxx");
        // 直接添加文件,RestSharp自动处理二进制流传输与Content-Type
        request.AddFile("file", filePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        
        RestResponse response = await client.ExecuteAsync(request);
        Console.WriteLine(response.Content);
        return response.Content;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return ex.Message;
    }
}

关键修改点

  • 移除字符串转换操作:改用RestSharp内置的AddFile方法,直接传输二进制文件流,避免编码损坏。
  • 规范异步调用:将client.Execute改为client.ExecuteAsync,用await替代.Result,避免异步阻塞和潜在死锁。
  • 修正MIME类型:xlsx文件的标准MIME类型是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,而非application/xlsx。
  • 简化请求配置:无需手动设置请求体Content-Type,AddFile会自动处理相关头信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:40:40