.NET Core Web API如何返回带状态码的CSV文件?
在.NET Core 6 WebAPI中返回CSV文件同时指定状态码
方法1:构造FileContentResult并设置状态码
直接创建FileContentResult实例,手动指定状态码、CSV数据、内容类型和文件名,这种方式最直观:
[HttpPost] [Route("Search")] public async Task<IActionResult> Search(IFormFile file) { // 修正原代码中GetList的参数问题,传入实际业务所需的id值 StringBuilder sb = await GetList(/* 此处传入正确的id参数 */); byte[] csvBytes = Encoding.ASCII.GetBytes(sb.ToString()); // 构造结果并指定状态码,可根据业务场景替换为201/400等合规HTTP状态码 var csvResult = new FileContentResult(csvBytes, "text/csv") { FileDownloadName = fileName, StatusCode = StatusCodes.Status200OK }; return csvResult; }
方法2:用StatusCode包裹File结果
如果想简化代码,可以用StatusCode方法直接包裹原有的File返回结果,同时指定状态码:
[HttpPost] [Route("Search")] public async Task<IActionResult> Search(IFormFile file) { StringBuilder sb = await GetList(/* 此处传入正确的id参数 */); byte[] csvBytes = Encoding.ASCII.GetBytes(sb.ToString()); // 第一个参数为目标状态码,第二个参数为返回的CSV文件结果 return StatusCode(StatusCodes.Status200OK, File(csvBytes, "text/csv", fileName)); }
注意事项
- 状态码需遵循HTTP规范:成功场景用
200 OK/201 Created,异常场景用4xx(如400 Bad Request)或5xx(如500 Internal Server Error) - 原代码中
GetList(int id)的参数存在语法问题,需传入实际业务逻辑中获取到的合法id值(比如从CSV文件解析、路由参数或请求参数中获取)
内容的提问来源于stack exchange,提问作者Ullan
相关产品推荐
相关产品推荐

