ASP.NET Core中的File()、PhysicalFile()、PhysicalFileResult()有什么不同? [英] What is the difference between File(), PhysicalFile(), PhysicalFileResult() in ASP.NET Core?

查看:31
本文介绍了ASP.NET Core中的File()、PhysicalFile()、PhysicalFileResult()有什么不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用ASP.NET CORE 3.1构建一个Web API终结点,它允许应用程序向我发送ID,而响应将使用相应的文件。

以下是我的方法

[HttpGet("get")]
public IActionResult Get(Guid id)
{
    FoundFileInfo file = PathFinder.Get(id);

    if(file == null || !System.IO.File.Exists(file.Fullname))
    {
        return NotFound();
    }

    return File(file.Fullname, "image/jpeg");
}

使用相同的代码,我可以返回File(file.VirtualName, "image/jpeg")new PhysicalFileResult(filename, "image/jpeg")PhysicalFile(filename, "image/jpeg")。但是它们之间有什么不同,它们的正确用例是什么?

我的最终目标是允许使用者根据端点的响应构造IFileInfo的实例。不知何故,我想给消费者提供足够的信息,如LastModifiedLengthNamePhysicalPath。哪种方法适合我的案例?

推荐答案

.NET Core的File仅处理虚拟路径(在您的网站内相对)。PhysicalFile处理物理(绝对)文件路径。

PhysicalFile只是返回PhysicalFileResult的外观。但是您可以使用new PhysicalFileResult手动返回。

我认为没有其他区别,选择主要取决于您如何能够获得要返回的文件的位置。如果您同时拥有虚拟和物理位置,则可以选择这两个位置中的任何一个(FilePhysicalFile)。

这篇关于ASP.NET Core中的File()、PhysicalFile()、PhysicalFileResult()有什么不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆