我正在使用以下代码从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.

推荐答案

这两个方法被明确地记录为彼此的别名.例如,Results.File的文档指出:

这个API是Stream(Stream, String, String, Nullable, EntityTagHeaderValue, Boolean)的别名.

如果你深入了解源代码,你还会看到Results.FileResults.Stream最终都返回了同一个FileStreamHttpResult类的实例.

Csharp相关问答推荐

在2D数组中绘制椭圆

如何使用PDFSharp将文本添加到现有PDF

如何保持主摄像头视角保持一致?

以自动方式注销Azure身份应用程序

使用特定格式的JsonConvert序列化对象

C++/C#HostFXR通过std::tuple传递参数

碰撞检测与盒碰撞器,其isTrigger on问题

如何模拟耐久任务客户端在统一测试和获取错误在调度NewsListationInstanceAsync模拟设置

C#.NET依赖项注入顺序澄清

需要在重新启动ApplicartionPool或IIS后启动/唤醒API的帮助

Blazorise折线图仅绘制数据集的一部分

如何在ASP.NET Core8中启用REST应用程序的序列化?

如何使用自定义负载均衡器管理Ocelot负载均衡器中的多线程和批读取

如何通过寻找向量长度来优化两个循环?

为什么方法的值在SELECT方法中不会更改?

在try 使用访问服务器上的文件夹时,如何解决CORS错误.NET核心API

当我将`ConcurentDictionary`转换为`IDictionary`时,出现了奇怪的并发行为

如何实现有条件的自定义Json转换器隐藏属性

从MudAutoComplete打开对话框,列表仍然可见

如果所有";async任务方法()";调用都返回Task.FromResult()-是否同步执行?