返回

.NET Core中的File和PhysicalFile

2019-04-03 .NET Core FileNotFoundException PhysicalFile 6117 2

最近在把.NET Framework的项目转成.NET Core,中间遇到不少坑,原来一个下载文件的地方突然又报了FileNotFoundException: Could not find file异常。查看源代码发现是Controller里原来的return File()这个方法在Core里跟之前是不一样了。

60a6b06abec446faa74fd956597d4a21.png

原来代码里导出Excel的时候是这样写的:

var fileName = System.IO.Path.GetTempFileName() + ".xlsx";
//略去将数据写入文件部分代码
return this.File(fileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "导出数据.xlsx");

看了这个File方法的签名:

public virtual VirtualFileResult File(string virtualPath, string contentType, string fileDownloadName);

在.NET Core里,第一个参数改为virtualPath是虚拟路径了,而现在文件是保存在临时文件夹里的,那要如何解决呢?

原来.NET Core提供了PhysicalFile这个方法,改成下面这样就可以了:

return this.File(PhysicalFile, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "导出数据.xlsx");

您可能感兴趣:

阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价

DOVE 网络加速器 梯子 免费 试用

网友点评
  • 匿名用户

    666

  • zhuce3721

    141414

椤堕儴