首页 >后端开发 >C++ >如何在 ASP.Net Core Web API 中以二进制响应形式返回文件?

如何在 ASP.Net Core Web API 中以二进制响应形式返回文件?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-29 08:39:02377浏览

How Can I Return a File as a Binary Response in ASP.Net Core Web API?

克服 ASP.Net Core Web API 中的 JSON 转换文件返回问题

在 ASP.Net Core Web API 中,可以将文件作为 JSON 响应返回麻烦。可以理解的是,您希望以原始二进制格式返回文件。为了解决这个问题,我们需要深入研究 ASP.Net Core 中结果类型的概念。

理解 IActionResult 接口

在 ASP.Net Core 中,IActionResult是一个表示操作方法结果的接口。它封装了 HTTP 响应正文和状态代码,为自定义响应提供了灵活性。

解决方案:返回 FileStreamResult

要返回文件,我们将利用FileStreamResult 类,它实现 IActionResult。这允许我们指定响应的文件流、内容类型和文件名。

以下代码片段演示了这种方法:

<code class="csharp">[Route("api/[controller]")]
public class DownloadController : Controller
{
    [HttpGet("{id}")]
    public async Task<IActionResult> Download(string id)
    {
        Stream stream = await // Get stream based on id here

        if (stream == null)
            return NotFound(); // Handle not found scenario

        return File(stream, "application/octet-stream", "filename.ext");
    }
}</code>

在此代码中:

  • File() 使用指定的流、内容类型和文件名创建 FileStreamResult。
  • 框架自动将 HTTP 响应状态代码设置为 200 OK。
  • 框架处理响应完成时流以避免异常。

注意:

  • 如果在 Download 方法中对流使用 using 语句,该流可能会在发送响应之前被释放,从而导致错误。
  • NotFound() 调用返回一个 NotFoundResult,其 HTTP 状态代码为 404 Not Found。

以上是如何在 ASP.Net Core Web API 中以二进制响应形式返回文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn