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

使用Refit上传文件时收到0长度文件的问题求助

解决Refit多部分上传文件时服务器接收空文件的问题

核心原因

服务器能接收到正确文件名但文件长度为0,说明客户端发送的流未包含实际内容,大概率是文件流的读取位置不在起始点,导致Refit读取流时未获取到任何数据。

修复步骤及代码

1. 重置文件流位置

在创建StreamPart前,强制将FileStream的Position设置为0,确保从文件开头读取内容。

2. 显式指定Content-Type

使用StreamPart的完整构造函数指定文件的MIME类型,帮助Refit正确构造多部分表单请求。

修正后的客户端代码:

public async Task SaveProjectToCloudAsync()
{
    using (var fileStream = new FileStream(_pdProject.currentFilePath, FileMode.Open))
    {
        // 重置流到起始位置
        fileStream.Position = 0;
        // 初始化StreamPart时指定文件名和通用二进制Content-Type
        var streamPart = new StreamPart(fileStream, "project.pd", "application/octet-stream");
        var response = await _projectApi.SaveFileAsync(streamPart, _projectToSave.Id);
    }
}

额外排查建议

  • 验证本地文件_pdProject.currentFilePath本身是否为空,排除源文件问题
  • 检查Refit版本,升级到最新稳定版避免已知的上传bug
  • 服务器端可添加日志输出projectFile.ContentLength和projectFile.Length,确认数据是否真的未传输

内容的提问来源于stack exchange,提问作者Sar.Dmitry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:55:42