ASP.NET Core Results.File 与 Results.Stream

问题描述 投票:0回答:1

我使用以下代码从 ASP.NET Core API 返回一个文件:

app.MapGroup("file").MapGet("/export", async () => 
{
    var fileStream = someCode1();
    var fileType= someCode2();
    var fileName= someCode3();

    return Results.File(
        fileStream,
        fileType.ToMimeType(),
        fileName.Full);
}
  • fileStream 是磁盘上文件的开放流
  • 第二个参数是文件的 mime 类型,字符串
  • 第三个参数是文件名

我注意到我也可以使用

Results.Stream()
代替,文件下载仍然可以正常进行。有谁知道这两种方法有什么区别以及什么时候应该使用它们?

Results.File
https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.results.file?view=aspnetcore-8.0

Results.Stream
https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.results.stream?view=aspnetcore-8.0

c# asp.net asp.net-core asp.net-web-api minimal-apis
1个回答
1
投票

这两种方法被明确记录为彼此的别名。例如,

Results.File
的文档指出:

此 API 是 Stream(Stream, String, String, Nullable, EntityTagHeaderValue, Boolean)的别名。

如果深入研究源代码,您还会发现

Results.File
Results.Stream
最终都会返回同一
FileStreamHttpResult
类的实例。

© www.soinside.com 2019 - 2024. All rights reserved.