直接通过URL+地址下载是一种极其不安全的方式.这里我们采用返回流的形式来下载

///<summary>
///文件流的方式输出        
///</summary>
public IActionResult DownLoad(string file)
{
   var addrUrl = file;
   var stream = System.IO.File.OpenRead(addrUrl);
   string fileExt = GetFileExt(file);
   //获取文件的ContentType
   var provider = new FileExtensionContentTypeProvider();
   var memi = provider.Mappings[fileExt];
   return File(stream, memi, Path.GetFileName(addrUrl));
}

这里File方法返回类型是FileContentResult,IActionResult继承它。File传入的参数为文件的流对象。
这里值得注意的是,以前我们想获取ContentType直接使用MimeMapping.GetMimeMapping(file);就好了.
但是这个类是在System.Web下的,core已经抛弃了现有的System.Web.
所以在ASP.NET Core中我们需要通过新的类FileExtensionContentTypeProvider来获取文件的ContentType

第一步先获取文件后缀名,然后后面两步是获取对应的ContentType,ContentType对应了服务器返回数据流的类型,也就是返回什么样的格式的文件给你。

string fileExt = GetFileExt(file);
//获取文件的ContentType
var provider = new FileExtensionContentTypeProvider();
var memi = provider.Mappings[fileExt];