繁体   English   中英

ASP.NET Core 中的 File()、PhysicalFile()、PhysicalFileResult() 有什么区别?

[英]What is the difference between File(), PhysicalFile(), PhysicalFileResult() in ASP.NET Core?

我正在尝试使用 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 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM