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

.NET 6中如何将API返回的FileStreamResult转为FileContentResult

解决API调用后返回FileContentResult的问题

核心要点:FileContentResult 需要字节数组作为输入而非流,所以你需要将API 01返回的响应内容读取为字节数组,同时保留原响应的Content-Type信息。

修改后的API 02代码如下:

var endPoint = $"/api/image/user/{email}";
var response = await _client.GetAsync(new Uri(endPoint, UriKind.Relative)).ConfigureAwait(false);

// 先校验响应状态,处理API 01返回的错误情况
if (!response.IsSuccessStatusCode)
{
    return NotFound(); // 对应API 01的NotFound逻辑,可根据实际需求调整
}

// 获取原响应的Content-Type,保证返回文件的类型一致性
var contentType = response.Content.Headers.ContentType?.ToString() ?? "application/octet-stream";

// 将响应内容读取为字节数组(FileContentResult的必填参数类型)
var fileBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);

// 返回FileContentResult,可选设置下载文件名
return new FileContentResult(fileBytes, contentType)
{
    FileDownloadName = $"user_{email}.png" // 根据实际文件类型调整后缀,可省略该属性
};

关键说明:

  • 必须先检查响应状态码,避免在失败响应上执行后续读取操作
  • 复用API 01返回的Content-Type,确保客户端收到的文件类型正确
  • 使用ReadAsByteArrayAsync()替代ReadAsStreamAsync(),匹配FileContentResult的参数要求
  • 可选设置FileDownloadName,让客户端下载文件时自动使用指定名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:34:58