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

使用RestSharp上传文件时文件为空的问题排查

RestSharp上传文件为空,Postman正常,求排查

我用Post请求通过RestSharp上传文件,Postman能正常上传,但RestSharp上传的文件始终为空,是不是操作有问题?

我对照RestSharp官方文档走的流程,应该是合规的,找了Stack Overflow上的旧问题但不适用于当前版本。

测试代码

[Fact]
public async Task Upload_ShouldWork()
{
    //Arrange
    await this._fixture.Login();
    FileStream stream = File.OpenRead("C:\\Users\\Franz Seidl\\OneDrive\\Bilder\\testImage.png");
    //Act
    var result = await this._testClass.Upload(stream, 1, true);
    //Assert
    result.Should().BeTrue();
}

客户端代码

public async Task<bool> Upload(Stream fileStream, int id, bool force = false)
{
        var request = new RestRequest($"{BaseUrl}Upload/{{id}}");
        var fileParam = FileParameter.Create("upload",() => fileStream,"upload.png");
        
        request.AddUrlSegment("id", id.ToString());
        request.AddQueryParameter("force", force.ToString());
        request.AddFile("upload.png", () => fileStream,"upload.png", ContentType.Binary);
        var result = await this._client.PostAsync<bool>(request);
        return result;
}

后端代码

[HttpPost("Upload/{id}")]
public async Task<ActionResult<bool>> UploadImage([FromRoute] int id, [FromQuery] bool force=false)
{
    try
    {
        if (Request.ContentLength == 0 && Request.Body != null) throw new ArgumentException("No file provided");
        var fileStream = Request.Body;
        var result = await this._service.Upload(fileStream,id,force);
        return result;
    }
    catch (ArgumentException e)
    {
        var errorDTO = this._exceptionHandler.HandleExceptionAndCreateDTO(e);
        return this.BadRequest(errorDTO);
    }
    catch (Exception e)
    {
        var errorDTO = this._exceptionHandler.HandleExceptionAndCreateDTO(e);
        return StatusCode(StatusCodes.Status500InternalServerError, errorDTO);
    }
}

我把请求发到Postman MockServer后,发现两个请求的细节差异:

  • Postman请求的Request.ContentLength为1444,和文件流大小一致
  • RestSharp请求的Request.ContentLength为1643,怀疑是编码问题导致文件为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:08:10